Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Files and settings

claudius keeps songs, sounds, models and caches in separate places, so that each can be backed up, moved or deleted on its own. The paths below are for macOS and Linux; where an environment variable moves a folder, it is named.

Where everything is

whatmacOSLinuxmoved by
songs saved from the studio and the MCP tools~/Music/claudius$XDG_MUSIC_DIR/claudius, else ./outthe path of save
songs written by the command line./out (where you run it)./out-o
caches~/Library/Caches/claudius$XDG_CACHE_HOME/claudius or ~/.cache/claudiusCLAUDIUS_HOME
sample packs~/Library/Application Support/claudius/packs~/.local/share/claudius/packsCLAUDIUS_PACKS
scratch space while a pack installs~/Library/Caches/claudius/packs~/.cache/claudius/packs
listening models~/.cache/earshot-rs~/.cache/earshot-rsEARSHOT_HOME
your genres~/Library/Application Support/claudius/genres~/.config/claudius/genres
the answer about usage statistics~/Library/Application Support/claudius/telemetry.json~/.config/claudius/telemetry.json
whether to update automatically, and the day it last looked~/Library/Application Support/claudius/updates.json~/.config/claudius/updates.json
studio window preferences~/Library/Application Support/claudius-studio/app.ron~/.local/share/claudius-studio/app.ron
Apple Loops (read only)/Library/Audio/Apple Loops, ~/Library/Audio/Apple Loops
programs and web studio (install script)~/.local/bin, ~/.local/share/claudius/webthe sameCLAUDIUS_INSTALL_DIR

On Linux, $XDG_MUSIC_DIR comes from ~/.config/user-dirs.dirs; without it, the studio saves under out in the folder it was started from. The web studio keeps its preferences in the browser’s local storage.

Song folders

A song folder holds a song in every form claudius has for it. One function, song::write_folder, writes every folder, whether the CLI (make, script, render, remake, evolve, mutate) or a save in the studio or over MCP made it, so they hold the same files:

filewhat it is
song.wavthe master, 48 kHz, 24-bit
song.mp3a 256 kbps copy, when ffmpeg is installed
blueprint.jsonthe song’s genome
song.rhaithe song as a script
project.jsonthe arranged session
report.jsontempo, key, form, loudness, and every track’s level and gain
verdict.jsonthe critic’s verdict
credits.txtattributions, when sample packs play
stems/<track>.wavevery track, 32-bit float: always from a save, from make and render with --stems

Stems are floating point because a track can peak above full scale before the master’s limiter brings the mix down. claudius judge runs its arrangement and theory checks when project.json sits next to the audio, so any song folder gets the full verdict.

blueprint.json is the song: claudius render, claudius script --on, claudius evolve --from, claudius mutate, and open in the studio and the MCP tools all start from it. The song model describes its fields. Every later claudius opens it; a newer claudius’s song, in a format this one does not read yet, says so and asks for an update. A blueprint that plays audio files (Apple Loops, chops, files from scripts) stores their paths, so it plays on another computer only where those files exist.

Caches

Everything in the cache folder can be deleted while claudius is not running; it is rebuilt on demand.

folderwhatgrows by
decoded/every audio file claudius has read, decoded to raw 48 kHz stereo .f32, keyed by path, size and modification timeabout 23 MB per minute of audio
stretched/Apple Loops and samples warped to a tempo and keyone file per loop, tempo and key
samples/drum one-shots cut from Apple Loopsa few hundred KB each
user/library.jsonthe user library: chops and found sounds from claudius chop
renders/<process id>/a running session’s renders: <version>.wav, .mp3, and <version>/ with stemsabout 70 MB per four-minute render, and a WAV per track more for a render with stems, which every save makes: a new two-minute lofi song and one save left 433 MB

A session keeps its last ten renders and deletes older ones as it goes. When a session starts, it deletes the render folders of sessions that last wrote more than 12 hours ago, so a session that crashed leaves its renders behind for at most that long. decoded/ and stretched/ are never trimmed: on a machine that renders and analyses a lot, they reach gigabytes, and deleting them costs only the time to decode again.

The pack installer’s scratch space holds downloaded archives and their unpacked files only while a pack installs, and is removed afterwards.

Sample packs and models

A pack is a folder under the packs folder with an index.json and a files/ folder; Sample packs covers installing and removing them. claudius-packs list prints the folder in use.

The models live under models/<repository>/<revision>/ in the models folder, one revision folder per pinned model, with CLAP’s text embeddings of earshot’s vocabulary cached in text/clap-d78c3994912c.bin. Deleting the folder makes the next verdict download 785 MB again (1.13 GB with the AudioSet tagger).

Your genres

A genre is a JSON file. claudius loads its eight built-in genres, then every .json file in your genres folder; a file whose name matches a built-in genre replaces it. The fields are those of crates/claudius/data/genres/house.json; copy it, rename the name, change what you like, and claudius genres lists it. A file that does not parse makes every genre lookup fail, the built-in genres included, so make and song() fail with Error: genre file <path> and the JSON error under Caused by:, and the studio’s list of genres comes up empty. Fix or move the file and try again.

The web studio

claudius studio, serve and mcp serve the web studio at / from the first of these folders that has an index.html:

  1. --web <dir>, or CLAUDIUS_WEB;
  2. share/claudius/web next to the program’s folder (~/.local/share/claudius/web for ~/.local/bin/claudius);
  3. web inside the program’s folder;
  4. crates/claudius-ui/dist of the checkout the program was built from (cargo xtask web builds it there).

Without one, / shows a page that says how to build it, and the API and MCP work as usual.

Assistant configuration

claudius connect edits these files, keeping a copy of the previous version as <file>.bak:

clientfile
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows), ~/.config/Claude/claude_desktop_config.json (Linux)
Cursor~/.cursor/mcp.json
Claude Codeits own configuration, through claude mcp add --scope user

Environment variables

variabledefaultwhat it changes
CLAUDIUS_HOMEthe cache folder abovewhere caches and session renders go
CLAUDIUS_PACKSthe packs folder abovewhere packs are installed and read
CLAUDIUS_PACKS_CACHE_MB3072memory for decoded sample-pack audio
CLAUDIUS_PORT7878--port of studio, serve, mcp, doctor and connect
CLAUDIUS_TOKENnone--token of serve and mcp
CLAUDIUS_WEBfound as abovethe web studio folder
CLAUDIUS_FFMPEGffmpeg on PATH, then /opt/homebrew/bin, /usr/local/bin, /usr/binthe ffmpeg claudius uses for formats it cannot decode and for MP3; none turns it off
CLAUDIUS_DEBUGunsetwhen set, renders print their timings and the beat tracker its cues to stderr
DO_NOT_TRACK, CLAUDIUS_TELEMETRYunsetDO_NOT_TRACK=1 or CLAUDIUS_TELEMETRY=0 keeps usage statistics off whatever the answer
CLAUDIUS_TELEMETRY_URLthe Worker in telemetry/where usage statistics go, to test an endpoint (the only place a debug build sends them)
CLAUDIUS_UPDATESonoff stops the studio’s daily look for updates
CLAUDIUS_UPDATE_SINCEunseta version for the updater to act as, to try an update against the latest release
EARSHOT_HOME~/.cache/earshot-rswhere the listening models and text embeddings go
EARSHOT_OFFLINEunset1 never downloads models; a verdict without them uses meters and theory
EARSHOT_THREADShalf the cores, at most 4threads per model
EARSHOT_FFMPEG, EARSHOT_FFPROBEfound like CLAUDIUS_FFMPEGthe ffmpeg and ffprobe earshot decodes reference tracks with
GITHUB_TOKEN, GH_TOKENunsetsent to GitHub’s API while installing packs, for its higher rate limit
CLAUDIUS_SERVERhttp://127.0.0.1:7878the server the standalone claudius-ui program connects to
CLAUDIUS_MOCKunset1 makes claudius-ui run against its built-in demo song
CLAUDIUS_UI_PLANunseta scripted run of the studio window, for testing (The studio UI)

The install script reads CLAUDIUS_VERSION, CLAUDIUS_INSTALL_DIR and CLAUDIUS_DOWNLOAD_URL; see Install.