claudio

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 quit
claudio setupthe wizard again
claudio doctorcheck everything and run one typed turn
claudio installadd the Claude Code hooks to ~/.claude/settings.json
claudio uninstallremove them
claudio forgetdrop the brain's memory of past conversations
claudio restartrestart the claudio that is running, once its reply is said
claudio learn <rule>add a rule the brain keeps across conversations, to learned.md
claudio unlearn <words>drop the one learned rule with these words
claudio choose <surface> <n>[,<n>…] | --other "<words>"answer the question a session shows
claudio open <link or note>open a web link, or a .md/.txt note in ~/Desktop or ~/Documents
claudio set <key> <value>change one setting
claudio hook <event>what the hooks call

Any 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”.

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:

  1. shows whether claude and the sessions platform backend names, cmux or bb, are installed
  2. asks for the Deepgram key and tests it against Deepgram, three tries at most; a stored key is kept on Enter
  3. 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
  4. asks for one of six Aura voices, the brain's model and effort, and whether talking over a reply interrupts it
  5. saves config.json and secrets.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.

CheckIf it fails
claude on PATH, then claude version …install Claude Code
two checks of the sessions platform backend namessee below
Deepgram key setclaudio setup
Deepgram key acceptedget a working key at console.deepgram.com
the three Claude Code hooks installedclaudio install
with mouth set to local: local voice … loadsclaudio set local_voice am_michael
echo canceller built or buildableinstall the Xcode command line tools, or use headphones
microphone: …the error from the audio system
persona additions file presentit is made on first run

The two platform checks depend on backend:

backendCheckIf it fails
bbbb reachableis bb running? (bb-app start, or open bb)
bborchestrator '…' is a bb thread, passed when no orchestrator is setclaudio set orchestrator <thread title>
cmuxcmux reachableis cmux running?
cmuxorchestrator '…' is a live workspaceclaudio 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:

  • Stop
  • Notification
  • PreToolUse with matcher AskUserQuestion

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 changed
  • the 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 2000
eot_timeout_ms = 2000

A 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

VariableEffect
CLAUDIO_<KEY>overrides one setting for one run, such as CLAUDIO_STYLE=brief
DEEPGRAM_API_KEYthe Deepgram key, over secrets.json
ELEVENLABS_API_KEYthe ElevenLabs key, over secrets.json
XDG_CONFIG_HOMEmoves ~/.config/claudio to $XDG_CONFIG_HOME/claudio
CLAUDIO_TEXTwith claudio, runs one typed turn with this text and exits, without the mic; claudio doctor uses it
CMUX_BUNDLED_CLI_PATHcmux: the cmux binary to use, before the one on your PATH; the fallback is /Applications/cmux.app/Contents/Resources/bin/cmux
CMUX_SURFACE_IDcmux: set in each session; claudio hook reports it so claudio knows which session spoke
BB_THREAD_IDbb: 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

On this page