Skip to content

CLI Reference

Every command lives under the noun it acts on, as in docker container ls and gh pr list.

ailoud --help
ailoud audio --help
ailoud audio summarize --help

Shape

ailoud audio|recordings   import transcribe summarize search ls show annotate rm
ailoud report|reports     ls show rm
ailoud job|jobs           ls show rm
ailoud template|templates ls show new
ailoud mcp
ailoud doctor
ailoud setup

Letters

The same letter means the same verb in every group.

Letter Verb
i import
t transcribe
s summarize
f search (find)
l ls
v show (view)
a annotate
r rm
n new
ailoud audio f "rollback"
ailoud report l

The old top-level spellings still work: ailoud ls, ailoud show, ailoud rm, ailoud annotate, ailoud import, ailoud transcribe, ailoud summarize, ailoud search.

audio import

ailoud audio import <path...> [--title <text>] [--notes <text>] [--tag <tag>]
Option Does
--title <text> title for the imported recording
--notes <text> free-form notes
--tag <tag> tag everything imported; repeatable

audio transcribe

ailoud audio transcribe [ids...] [options]
Option Does
--lang <codes> ru, or ru,en for several, or auto
--model <name> override the configured model
--force re-transcribe recordings that already have a transcript
--multilingual segment by speech and language, transcribe each run
--diarize attribute segments to speakers
--speakers <n> known number of speakers
--tag <tag> tag these recordings; repeatable
--max-cpu <percent> share of this machine to use, 1 to 100
--no-gpu do not use the GPU, even where a binary supports it
--denoise <mode> auto, on or off
--detach start the work in the background and print a job id

With no ids, transcribes everything that has no transcript yet.

ailoud audio search <query...> [options]
Option Does
--tag <tag> only recordings carrying this tag; repeatable
--lang <code> only segments in this language
--recording <id> only this recording
--limit <n> at most this many hits (default 50)
--all every transcript, not only the newest
--json JSON instead of text

audio summarize

ailoud audio summarize [ids...] [options]
Option Does
--tag <tag> summarise everything carrying this tag; repeatable
--template <name> which shape; see ailoud template ls
--context <text> a sentence the transcript does not say
--lang <code> write the summary in this language
--fresh re-read transcripts instead of stored reports
--no-save do not store the summary
--max-cpu <percent> share of this machine to use, 1 to 100
--detach start the work in the background and print a job id

audio ls

ailoud audio ls [--tag <tag>] [--json]

audio show

ailoud audio show <id> [options]
Option Does
--format <format> text, json, srt, vtt (default text)
--speakers list who spoke, instead of the transcript
--speaker <who> only this speaker
--transcript <id> a specific transcript instead of the newest

audio annotate

ailoud audio annotate <id> [options]
Option Does
--title <text> the recording's title
--notes <text> free-form context
--speaker <label=name> a real name for one label, e.g. speaker_00=Ann; repeatable
--tag <tag> group under a tag; repeatable

audio rm

ailoud audio rm <ids...> [--force]

Asks first. --force skips the question.

report

ailoud report ls [--recording <id>] [--json]
ailoud report show <id> [--json]
ailoud report rm <ids...> [--force]

job

ailoud job ls [--json]
ailoud job show <id> [--json]
ailoud job rm <id>
Verb Letter Does
ls l list background jobs, newest first
show v print one job in full, including its log path
rm r forget a finished job; refuses a running one

jobs is the plural alias, as in job|jobs elsewhere. A job comes from audio transcribe --detach, audio summarize --detach, or the MCP server.

--job <id> is an internal, hidden flag: it tells a detached child process, or an MCP-spawned one, which job to report progress into. It is not something to pass by hand.

template

ailoud template ls [--json]
ailoud template show <name>
ailoud template new <name> --context <text> --heading <text> [--heading <text>]...
                          [--summary <text>] [--from <name>]

mcp

ailoud mcp

Runs the library as an MCP server over stdio. See MCP.

doctor

ailoud doctor [--fix] [--yes] [--model <name>] [--llm <choice>] [--llm-model <id>]

setup

ailoud setup [--yes] [--model <name>] [--force] [--llm <choice>] [--llm-model <id>]

--llm is one of local, claude-cli, claude-api, openai, skip.

With no --model, setup installs large-v3-turbo-q5_0 (574 MB). The names it offers are tiny, base, small, large-v3-turbo-q5_0 and large-v3; medium and the f16 large-v3-turbo are no longer offered but still install when named, and an installed one is left alone. Which to pick, with the measurements, is in Transcription model.

setup --model <name> switches the transcription model even when the configured one is already healthy -- naming a different model is enough, --force is not required. (doctor --fix --model <name> does not: it only names what a genuinely missing model downloads as, same as before.) The old model file is never deleted; setup prints its path so you can remove it by hand. With no --model at all, --force reinstalls whatever is already configured -- it never replaces it with the default. If the configured file matches no catalogue name (e.g. a whisper.cpp build of your own), it is left alone instead, with a note saying so; pass --model <name> to move to a catalogue model.

--force reinstalls everything ailoud needs, even when every check already passes: ffmpeg, whisper.cpp, every whisper model. Use it to replace a corrupted file doctor cannot see is broken. If you use a local summariser (--llm local), it also reinstalls llama.cpp and re-downloads its 2.1 GB model; a hosted summariser (Claude, OpenAI) is untouched either way.

self completions

ailoud self completions install [--shell <ids>] [-y]
ailoud self completions uninstall [--shell <ids>]
ailoud self completions update
ailoud self completions print <shell>

Shells: bash, zsh, fish. Fish autoloads its own completions directory, so install and uninstall never touch a fish startup file; bash and zsh both get a marker block added to (or removed from) ~/.bashrc / ~/.zshrc. setup --yes installs none of these; accept its prompt, pass --completions to get them without asking, or --no-completions to skip the prompt and decline.

Exit codes

Code Means
0 ok
1 failure
2 usage error
3 environment not ready

Ids

Any unambiguous prefix of at least two characters works.

ailoud audio show 01M1B2

An ambiguous prefix says how many matched and shows the first few.

Piping

Decoration and colour appear only on a terminal. Pipe any command and you get plain, stable text.

ailoud audio ls --json | jq '.[].id'
ailoud audio show ID001 --format srt > subtitles.srt