Skip to content
Documentation
Project

CLI — Commands

Options, syntax and output

Shared options, command-scoped families and the complete option matrix.

An option changes one command’s behavior. Aède separates true shared options from reusable command-scoped families and specialized flags. Never assume that a familiar option applies everywhere: the command’s own table is the practical reference.

Shared presentation and data options#

OptionMeaning
--data FOLDERUse this Aède data directory, not a music folder to scan. Applies wherever the operation reads/writes stored data.
--no-colorDisable terminal ANSI colors.
--help, -hShow index or current command help and stop.
--version, -v, -VPrint executable version and stop.

Data precedence is --data, AEDE_HOME, $XDG_DATA_HOME/aede, ~/.local/share/aede, then .aede in the working folder if HOME is unset. A direct file inspection needs no catalog; playback still uses the data directory for catalog selections/history. Use one location consistently with the server.

How to type values#

aede albums --limit 10
aede albums --limit=10
aede track "So What" --artist "Miles Davis"
aede play "/path/to/audio.flac" --bass -2
aede note album "Kind of Blue" --file -
aede file -- ./-track.flac

Both --option value and --option=value work. Paths/numbers/keywords take one token. Name-valued options (--artist, --album, --with, --genre, --label, --comment, --role, --country, --text, --from, --tag, --query, --collection, --instrument) consume words until the next option: put the positional name first. Quote multiword paths and names to make boundaries explicit. -- ends option parsing for a path starting with a dash. A lone - is accepted as standard input for notes. --bass -2/--treble -2 specially accept a negative numeric value; --bass=-2 also works.

Short forms are separate options: -j means command-scoped --json, -o FILE means command-scoped --output FILE. -o=FILE is supported. Do not combine short letters (-jo); that is not a declared alias. Unknown/missing-valued options are validated even before help/version. Repeating the same option currently keeps the last value; write it once to avoid accidental replacement.

Valueless flags such as --yes, --json and --help refuse inline values, including =false, =true and an empty =. They are presence switches, not boolean-valued options. This validation happens before help/version, confirmation or any data change; omit --yes when confirmation should remain required.

Reusable families#

Pagination: --limit N, --offset N, --all only on the commands below. N is a whole number; limit must be positive, offset starts at zero, all and limit are incompatible. Ordinary paged lists generally default to 50; some reports choose smaller subsidiary lists. Export preserves the actual filtered/paged rows, so request all deliberately.

Output: choose one of CSV, JSON or M3U where supported. --output/-o writes a real export, not arbitrary human pages. --separator requires CSV; export --tracks requires CSV. CSV uses RFC-compatible quoting; tools that split blindly on commas can corrupt quoted titles. --separator tab avoids that for simple tab-delimited shell workflows. M3U contains file paths and does not copy sound.

Export destinations are checked before a command changes personal data. Active Aède stores and writer locks, existing audio files, symbolic links and non-regular targets are refused. An ordinary report is replaced atomically after its full content is written; missing report folders may be created. Human terminal output escapes control instructions in notes, paths and metadata. JSON/CSV exports preserve original values; treat CSV text as untrusted data when opening it in a spreadsheet.

Confirmation: --yes exists only for reset, history, fetch, backup and restore. It skips that command’s actual confirmation; it is not a universal “ignore errors” option. Without a terminal, a needed confirmation refuses unless deliberately accepted.

Work reuse: --full belongs to scan/check/spectrum/fetch/fingerprint with different meanings; analyze uses --force. Never infer behavior from the name alone.

Complete recognized-option matrix#

This inventory follows the current dispatcher and handlers. It lists accepted command scope, not a promise that every combination is valid. Specialized constraints are documented per command. Current known handler gaps: missing --source and merge --source are accepted but not applied; sources --source filters list/forget and selects template provenance, while summary/export currently include every source. --compress/--quality belong semantically to copy although the current dispatcher does not reject those recognized names on every unrelated command. Use only their documented copy scope.

OptionCommands / scope
--dataShared (see above)
--port Nserve
--replacescan, copy
--removeroots, relation, missing, collection, love, rate, note, tag, played, history
--limit Nstats, doctor, credits, import, review, relations, missing, query, collection, favourites, notes, history, artists, countries, albums, genres, genre, labels, label, artist, album, track, search
--sort ORDERquery, collection, artists, countries, albums, genres, labels, years
--severity error\|warning\|infodoctor
--artist NAMEcredit, albums, track
--album TITLEtrack
--with NAMEartist
--separator ";" / --separator tabquery, collection, favourites, notes, artists, countries, albums, genres, genre, labels, label, years, artist, album, track, search, export
--csvquery, collection, favourites, notes, artists, countries, albums, genres, genre, labels, label, years, artist, album, track, search, export
--tracksexport
--m3uquery, collection, genre, label, artist, album, track, search
--year YYYYalbums
--output FILE / -o FILEsources, rules, relations, query, collection, favourites, notes, artists, countries, albums, genres, genre, labels, label, years, artist, album, track, search, export
--threads Nscan, analyze, check, copy, spectrum
--forceanalyze
--show-resultsanalyze
--json-layout album\|artistanalyze
--genre NAMEalbums
--label NAMEalbums
--json / -janalyze, stats, doctor, credits, relations, query, collection, favourites, notes, artists, countries, albums, genres, genre, labels, label, years, artist, album, track, search, export, scan
--no-colorShared (see above)
--yesreset, backup, restore, fetch, history
--forgetimport, sources, missing, merge
--pendingimport
--listimport, sources, missing, merge, fingerprint
--membersartist
--no-scanroots
--lyricsfetch, track, search, play
--simpleplaylist
--artistsplaylist
--extras none\|cover\|images\|allcopy
--dry-runcopy, spectrum, playlist, fetch, extract, fingerprint, scan, notes
--verify-existingcopy
--playlistscopy
--waitingnotes
--relink REFERENCEnotes
--to REFERENCEnotes
--undo-relink IDnotes
--relinksnotes
--verifycopy
--safe-namescopy
--raw-namescopy
--collection NAMEcopy
--compress FORMATcopy
--quality SETTINGcopy
--source NAMEimport, sources, review, relations, missing, merge
--compilationsalbums
--no-compilationsalbums
--role ROLEcredit, artists, artist
--comment TEXTalbums, track
--commentssearch
--notessearch
--offset Nstats, doctor, credits, import, review, relations, missing, query, collection, favourites, notes, history, artists, countries, albums, genres, genre, labels, label, artist, album, track, search
--allstats, doctor, credits, import, review, relations, missing, query, collection, favourites, notes, history, artists, countries, albums, genres, genre, labels, label, artist, album, track, search
--helpShared (see above)
--versionShared (see above)
--fullscan, check, spectrum, fetch, fingerprint
--follow-symlinksscan
--include-hiddenscan
--exclude FOLDER_OR_IDroots, credit
--stars Nrate
--text TEXTrelation, note
--from KIND:NAMEnote
--tag LABEL[,LABEL]relations, relation, notes
--file FILE_OR_-note
--appendnote
--query EXPRESSIONcopy, collection, artists, albums
--exportsources, rules, notes
--import FILEsources, rules, notes
--templatesources
--artist-ref REFfetch
--summariesfetch
--discographyfetch
--coversfetch
--size VALUEspectrum, fetch
--imagesfetch, extract
--country NAMEartists
--identifyfetch
--creditsfetch
--addcredit
--artist-id MBIDcredit
--instrument NAMEcredit
--recordingsfetch
--lang CODEfetch
--portraitsfetch
--logosfetch
--fanartfetch
--no-logofetch
--no-label-logofetch
--no-portraitfetch
--no-backgroundfetch
--no-bannerfetch
--no-album-coverfetch
--no-cdartfetch
--bannersfetch
--labelsfetch
--discogsfetch
--onlinelabel
--offlinelabel
--accept IDreview
--reject IDreview
--undo IDcredit, review
--interactivereview
--graphexport
--normalize off\|track\|albumplay
--bass DBplay
--treble DBplay