settagv0.1.0 · AGPL-3.0 · Python 3.10–3.14

Local analysis for DJ libraries

Nothing gets written until you say so.

SetTag runs Essentia’s MAEST model over your tracks on your own machine, proposes genre, mood, and instrument tags, and holds every change in a staging list. You read the diff. You decide what lands.

Staged changes~/Music/crate
  • Sundial — Marine Layer.flac
    genreHouseDeep House0.82
  • Kestrel — Night Vent.aiff
    genrenot setTechno0.74
  • Ferrous — Slow Tide.mp3
    moodnot setdark, hypnotic0.61
  • Palm Reader — Cassia.m4a
    genreBreakbeatalready correct, left alone
0 files written3 changes staged1 unchanged
$ uv tool install settagmacOS and Linux x86_64. No Windows.
scananalyzestagereviewwrite, on approval

Analysis and writing are separate steps, and only the last one touches your files. Re-running is cheap: SetTag records what it analyzed and with which settings, so unchanged tracks are skipped and changed ones are marked stale.

What it reads

MP3, AIFF, and WAV through ID3. FLAC through Vorbis comments. M4A, M4B, and MP4 through MP4 atoms.

Tags are written with Mutagen in each container’s native scheme, so the files stay readable by Rekordbox, Serato, and anything else that reads standard metadata.

What it runs

MAEST for genre by default. Discogs-EffNet heads add mood, theme, and instrument evidence when you ask for them.

Inference happens on your machine. Model files download once into ~/.cache/settag/models and are checked against pinned SHA-256 digests before anything loads. Nothing about your library leaves the machine.

  1. $ uv tool install settagNeeds Python 3.10–3.14.
  2. $ settag models downloadFetches the genre model. Add --tasks genre,mood-theme,instrument for the rest.
  3. $ settag ~/Music/crateOpens the review app. Pass a single file or a whole directory.
PlatformRequirement
macOS, Apple SiliconmacOS 15 (Sequoia) or newer
macOS, IntelmacOS 14 (Sonoma) or newer; macOS 15 on Python 3.14
Linux, x86_64glibc 2.17 or newer

Windows and Linux on ARM cannot run SetTag. The analysis backend, essentia-tensorflow, has never published wheels for either, and there is no source build worth attempting.

SetTag itself is AGPL-3.0-only. The models are not SetTag’s to license. UPF offers the Essentia model weights for non-commercial use, but its own documentation names the Creative Commons variant inconsistently, and the model metadata does not specify one at all.

Personal, educational, and research use likely falls within those terms. Professional or revenue-generating use is not clearly permitted and may need separate permission from UPF, or a different analysis backend. Downloading the models yourself does not change their terms.

Essentia licensing information · Third-party notices