Commands
Every claudio shell command, what it prints, and the environment variables it reads.
Run claudio from the project you want to talk about. The other commands set it up, check it, and change it. This list is generated from the code:
claudiotalk (runs setup the first time)claudio --dangerously-skip-permissionstalk, with the brain's permission checks off until you quitclaudio setupthe wizard againclaudio doctorcheck everything and run one typed turnclaudio installadd the Claude Code hooks to ~/.claude/settings.jsonclaudio uninstallremove themclaudio forgetdrop the brain's memory of past conversationsclaudio restartrestart the claudio that is running, once its reply is saidclaudio learn <rule>add a rule the brain keeps across conversations, to learned.mdclaudio unlearn <words>drop the one learned rule with these wordsclaudio choose <surface> <n>[,<n>…] | --other "<words>"answer the question a session showsclaudio open <link or note>open a web link, or a .md/.txt note in ~/Desktop or ~/Documentsclaudio set <key> <value>change one settingclaudio hook <event>what the hooks callAny other arguments print this usage and exit with status 1. claudio help, -h and --help print it and exit with status 0.
claudio
Starts talking. If there is no config.json yet, it runs setup first. The directory you run it from is the project the brain reads, and the place it looks for a .claudio.json.
Press Ctrl+C to quit.
claudio --dangerously-skip-permissions
Starts talking with the brain's permission checks off until you quit: it can run any command and reach any folder without asking, as claude --dangerously-skip-permissions does. The banner shows permissions off (permissions on otherwise) and the state line · no permission checks. It is never saved; the next plain claudio has the checks back. To switch mid-session instead, say “slash permissions skip”.
claudio open <link or note>
Opens a web link (http or https), or a .md or .txt note in ~/Desktop or ~/Documents, with macOS open. It refuses anything else, such as an app, a script or open's own flags. It is how the brain opens a note or a page: it may run it without asking, unlike open itself.
claudio setup
Runs the first-run wizard again. Each question offers your current value, so Enter keeps it. In order, it:
- shows whether
claudeand the sessions platformbackendnames, cmux or bb, are installed - asks for the Deepgram key and tests it against Deepgram, three tries at most; a stored key is kept on Enter
- asks which session is the orchestrator, from a numbered list of the platform's sessions (bb threads, or cmux workspaces), or by title when it finds none
- asks for one of six Aura voices, the brain's model and effort, and whether talking over a reply interrupts it
- saves
config.jsonandsecrets.json, then offers to install the hooks
A refused key prints that key was refused by Deepgram. After three refusals, setup stops with no working Deepgram key; setup stopped and saves nothing.
Setup never asks about the other settings. Use claudio set for those.
claudio doctor
Checks every part in order, then runs one typed turn through the brain and the mouth, and exits with status 1 if any check failed. Run it from the project directory, so a .claudio.json there is taken into account.
| Check | If it fails |
|---|---|
claude on PATH, then claude version … | install Claude Code |
two checks of the sessions platform backend names | see below |
Deepgram key set | claudio setup |
Deepgram key accepted | get a working key at console.deepgram.com |
the three Claude Code hooks installed | claudio install |
with mouth set to local: local voice … loads | claudio set local_voice am_michael |
echo canceller built or buildable | install the Xcode command line tools, or use headphones |
microphone: … | the error from the audio system |
persona additions file present | it is made on first run |
The two platform checks depend on backend:
backend | Check | If it fails |
|---|---|---|
bb | bb reachable | is bb running? (bb-app start, or open bb) |
bb | orchestrator '…' is a bb thread, passed when no orchestrator is set | claudio set orchestrator <thread title> |
cmux | cmux reachable | is cmux running? |
cmux | orchestrator '…' is a live workspace | claudio set orchestrator <title> |
The typed turn asks the brain to say “the doctor is in.” The last line is all good, or fix the ✗ lines above.
claudio install and claudio uninstall
claudio install adds three hooks to ~/.claude/settings.json, each calling claudio hook. They report from every Claude Code session, and claudio listens to those on the platform backend names:
StopNotificationPreToolUsewith matcherAskUserQuestion
Each hook command uses the full path of the claudio you ran, so run claudio install again if you reinstall claudio elsewhere. Install replaces any claudio hooks already there, so running it twice is safe. Only sessions started after the install report back.
claudio uninstall removes every hook whose command contains claudio hook.
Both keep the rest of the file and write it atomically. If settings.json is a symlink, they write the real file behind it. Before writing, they copy the old file to settings.json.bak-claudio next to it.
Both refuse to touch a file they cannot safely rewrite, and change nothing:
… could not be read as JSON (…); fix it first, nothing was changed… is not a JSON object; nothing was changedthe hooks section of … is not shaped as Claude Code writes it; nothing was changed
claudio forget
Deletes the remembered brain session, so the next start is a fresh conversation. It prints forgotten; the next start is a fresh conversation.
It does not delete the transcripts, which the brain can still read when you ask about past days. In a running claudio, say “slash clear” instead.
claudio restart
How the brain restarts claudio when you ask it to. The claudio running the brain sees the command and starts over once its reply is said, keeping the conversation and the permission checks. Run from your own shell, it only prints restarting once this reply is said; the conversation carries on: say “slash restart” instead.
claudio learn <rule>
Adds one rule to learned.md, which goes at the end of the persona from the next brain start, and prints learned: <rule>. A rule already there isn't added twice. The brain runs it when you correct it, after claudio asks you, with the rule on screen; you can run it too:
claudio learn "'seven' is usually 'save'"claudio forget leaves it alone.
claudio unlearn <words>
Drops the one rule in learned.md that contains these words, in any case, and prints unlearned: <rule>. A running claudio restarts its brain without the rule after the current reply. When none match, or several do, it drops nothing, lists the matches and exits with an error. The brain runs it when you ask it to forget a rule:
claudio unlearn "seven"You can also edit or empty ~/.config/claudio/learned.md yourself.
claudio choose <surface> <n>
cmux only: answers the multiple-choice question a session's pane shows, and prints chose: <option>. In bb, the brain answers a thread's question with bb thread interactions answer instead. The brain runs it once you have said your choice. It reads the pane first and refuses with an error when no question shows, when it is a permission prompt, or when a number isn't one of the options, listing them. Options count from 1. A question that takes several gets them with commas: each is ticked, then Submit is pressed. --other types your own words into "Type something". After the last of several questions it submits the review screen.
claudio choose 6913B2BC-A641-4DAA-9E9A-60536E06F5D5 2
claudio choose 6913B2BC-A641-4DAA-9E9A-60536E06F5D5 1,3
claudio choose 6913B2BC-A641-4DAA-9E9A-60536E06F5D5 --other "a hamster"claudio set <key> <value>
Checks one setting, saves it to the global config.json, and prints the result:
claudio set eot_timeout_ms 2000eot_timeout_ms = 2000A running claudio picks the change up within about a second. A bad value prints the reason, such as eot_timeout_ms must be a whole number, not '2000.5', saves nothing, and exits with status 1. Settings explains the value formats and when each change takes effect.
The API keys cannot be set this way: claudio set deepgram_api_key … prints the usage. Use claudio setup for the Deepgram key, and secrets.json for the ElevenLabs key.
claudio hook <event>
What the Claude Code hooks call; you do not run it yourself. When claudio is not running, it exits at once. Otherwise it reads the hook's JSON on stdin and sends a one-line report over the local socket. For Stop, the report includes the session's last message, up to its last 1,500 characters.
Environment variables
| Variable | Effect |
|---|---|
CLAUDIO_<KEY> | overrides one setting for one run, such as CLAUDIO_STYLE=brief |
DEEPGRAM_API_KEY | the Deepgram key, over secrets.json |
ELEVENLABS_API_KEY | the ElevenLabs key, over secrets.json |
XDG_CONFIG_HOME | moves ~/.config/claudio to $XDG_CONFIG_HOME/claudio |
CLAUDIO_TEXT | with claudio, runs one typed turn with this text and exits, without the mic; claudio doctor uses it |
CMUX_BUNDLED_CLI_PATH | cmux: the cmux binary to use, before the one on your PATH; the fallback is /Applications/cmux.app/Contents/Resources/bin/cmux |
CMUX_SURFACE_ID | cmux: set in each session; claudio hook reports it so claudio knows which session spoke |
BB_THREAD_ID | bb: the thread a session runs in; claudio hook reports it when there is no CMUX_SURFACE_ID, and with backend set to bb claudio leaves its own thread out of the sessions |