Local analysis for DJ libraries
Analyze.Review.You decide.
SetTag analyzes your tracks on your own machine: MAEST suggests genres, and optional Discogs-EffNet models add mood and instrument evidence. Changes wait in a staging list. You read the diff. You decide what lands.
$ uv tool install settagmacOS and Linux x86_64. No Windows.How a run goes
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.
Install
Install uv, then run these commands in your terminal. No repository checkout is needed.
$ uv tool install settagNeeds Python 3.10–3.14.$ settag models downloadFetches the genre model. Add--tasks genre,mood-theme,instrumentfor the rest.$ settag ~/Music/crateScans your library. Select tracks to analyze, review suggestions, then approve writes. Pass a single file or a whole directory.
Genre is the default. After downloading the optional models, launch with --tasks genre,mood-theme,instrument to use all three tasks.
Already installed? Run uv tool upgrade settag, then settag --version to check. For pipx installations, use pipx upgrade settag.
App usage guide · CLI examples · Latest release
| Platform | Requirement |
|---|---|
| macOS, Apple Silicon | macOS 15 (Sequoia) or newer |
| macOS, Intel | macOS 14 (Sonoma) or newer; macOS 15 on Python 3.14 |
| Linux, x86_64 | glibc 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.
Optional evidence for ranking experiments
Export audio embeddings from a mood or instrument analysis to a separate JSONL file. The export writes no music tags and can support offline similarity and ranking experiments. SetTag is an optional, recommended evidence source for SetPath; SetPath can run independently. Embeddings are not yet used in its live ranking.
Before you use this at work
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.