Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
A voice in front of your Claude Code sessions. You talk; it answers, or hands the work to a session and tells you when it is done.
Developer toolsPython · TypeScriptGitHub @ActurialCapitalOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A voice in front of your Claude Code sessions: talk, it answers, it hands work to your sessions.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗You talk. It answers in a sentence or two, or hands the work to one of your coding-agent sessions and tells you when that session is done, asks something, or needs a permission. It is not a reading bot: a separate small brain talks with you, decides whether you are discussing or asking for work, and narrates what your sessions report back in plain words.
uv tool install git+https://github.com/ActurialCapital/claudio
cd ~/code/myproject && claudio
The first run is a short setup: your Deepgram key, the session that is your orchestrator, a voice, the brain's model and effort. It installs the Claude Code hooks for you. claudio doctor checks everything afterwards. Your sessions live in cmux or bb: see Where it runs for the one step that depends on it.
Full documentation: claudio-vert.vercel.app/docs, from setup to every setting and what to do when something goes wrong.
flowchart LR
you(["🗣️ you"]) -->|speech| ears["👂 ears"]
ears -->|text| brain["🧠 brain"]
brain -->|text| mouth["👄 mouth"]
mouth -->|speech| you
brain <-->|"tasks · answers · questions"| s["💻 your sessions"]
The core above is the same everywhere. Around it you make two choices (platforms):
backend setting: bb, where a session is a bb thread running Claude Code, Codex, Cursor or another agent, or cmux, the default, where a session is a Claude Code session in a cmux pane.claudio from, or bb's panel, a claudio tab in every bb thread's right panel. Other front ends, such as an editor extension, can connect to the same ~/.config/claudio/view.sock; nothing in claudio is tied to one.| platform | what it is | the one extra step | docs |
|---|---|---|---|
| bb | sessions are bb threads; the panel is an optional front end | claudio set backend bb, then claudio setup; for the panel, cd plugins/bb && npm install && bb plugin install ., then reload bb's window (⌘R) | bb |
| cmux | sessions are cmux panes; claudio runs in a pane of its own | none: cmux is the default | cmux |
Run one claudio at a time: two, whatever their front ends, would fight over the mic. How the bb plugin starts claudio (its command setting) and how to work on it: plugins/bb.
| "what's the sequencer doing?" | reads that session, sums it up |
| "rebase 44 and run the tests" | asks, then hands it to the orchestrator |
| "open a session called Core" | a new session: a cmux workspace running claude, or a bb thread |
| "use Sonnet" · "the orchestrator is Core now" | changes a setting, kept for next time |
| "slash clear" · "slash status" · "slash help" | the slash commands, spoken |
| "slash quit" · "slash exit" | says bye and quits |
| "slash restart" · "restart yourself" | starts over, same conversation; new code restarts it on its own, once nothing is said |
| "slash voice a British woman" · "deep male" · "calm" | the one voice that fits, or a table of those that do: accent, age, gender, how it sounds; it sets the voice of the mouth that speaks, Aura, ElevenLabs or Kokoro |
| "slash style brief" · "caveman" · "plain" | how it talks: one sentence, caveman, or plain |
| "slash mute" · "slash unmute" | hears nothing until you unmute |
| "slash code colors off" | code blocks as plain text; "on" brings colours back |
| "slash name Roger" | it answers to Roger and calls itself that |
| "slash address me on" · "off" | only turns that start with its name count, for a room with other people |
| "slash barge in off" · "slash push to talk on" · "slash eot 0.8" | any setting, said as it reads; alone, one that is on or off flips |
| "what did we do today?" | reads today's transcript and tells you |
| "write a note: call Michael" | asks Desktop or Documents, then adds it to notes.md there, dated |
| "search what Aura-2 costs" | searches the web, says the answer, shows the links |
| "open issue 727 in the browser" | opens it, or a Google search, and says only "Opening it." |
| "yes", "always" or "no" (or press 1, 2, 3), when it asks to allow a command | yes runs it once; always also adds it to settings.json; the reply goes on |
| "yes", "always" or "no" (or 1, 2, 3), when a session asks for permission | answers the session's prompt with that option; no declines it; it never picks a mode switch |
Enter cuts a reply · Ctrl+C or /quit quits · typed /mute, /effort low, /clear work too
› rebase 44 on main and run the tests
◆ Sending that to Sequencer.
▸ Sequencer done · for "rebase 44 on main and run the tests"
◆ Rebased, tests pass, nothing to fix.
▃ listening · 1.1 s to first word · Sequencer idle
› you, ◆ claudio, ▸ a session reporting back with the request it was for, → what the brain is reading or running, ⚙ a setting you changed, · a note, ! a warning. Room noise and "mm-hm"s show dim.■ while muted, a mic level, then listening, thinking, speaking, paused, muted, how long the last reply took to its first word, and what the orchestrator is up to, glanced at every few seconds.code for key words.~/.config/claudio/transcripts/YYYY-MM-DD.md.learned.md for every future conversation.PERSONA.md and the brain restarts with it, memory kept; claudio's own rules come from the package, so updates still reach you.flowchart LR
mic["🎙️ mic"] --> aec["Apple voice-processing unit<br/><sub>echo cancellation: talk over it on speakers</sub>"]
aec --> flux["Deepgram Flux<br/><sub>streaming STT · eager end of turn</sub>"]
flux --> cp["Claude Agent SDK<br/><sub>one claude process · remembers</sub>"]
cp --> aura["Deepgram Aura<br/><sub>streaming TTS · per sentence</sub>"]
aura --> aec
hooks["🪝 Stop · Notification · AskUserQuestion"] -->|unix socket| cp
cp -->|"tasks, through the sessions' platform"| sessions["💻 sessions<br/><sub>bb threads · cmux panes</sub>"]
~/.config/claudio/brain.log and helper.log.claudio set says why.~/.config/claudio/config.json, written by setup and by voice; the keys live apart in secrets.json (mode 600), which the brain is not allowed to read. PERSONA.md beside it holds your additions to the persona; write freely. The brain reads files, git, gh issues and pull requests, and runs a few commands of your sessions' platform (bb or cmux), asking you before each send to a session; for anything more, answer when claudio asks (yes, always or no; the command waits), or add permission rules to settings.json, such as {"permissions": {"allow": ["Bash(gh:*)"]}}. It gets none of your Claude Code MCP servers; list any it should have in mcp.json. Saving either file restarts the brain with it. To drop every check for one run, start claudio --dangerously-skip-permissions, or say "slash permissions skip" and then yes.
The persona carries rules that keep the voice human, adapted for speech from humanizer's list of AI-writing tells: plain words, "is" not "serves as", no forced triads, no inflated significance, at most one hedge, no chatbot wrapper, stop on the last fact. The style setting, plain, brief or caveman, switchable mid-session by voice, follows claudish-to-english's idea of presets you can flip without touching the prompt.
| key | default | |
|---|---|---|
orchestrator | the session that gets tasks by default: a bb thread's title or a cmux workspace's | |
model · effort | default · low | default, sonnet, opus, haiku · low, medium, high, through your Claude Code login |
voice | aura-2-orion-en | any Deepgram Aura-2 voice; by voice, a name or what it sounds like |
style | plain | plain, brief (one sentence), caveman |
ears | flux-general-en | flux-general-multi for other languages |
eager_eot · eot · eot_timeout_ms | 0.3 · 0.7 · 1500 | end-of-turn tuning |
barge_in | true | talking over it pauses it |
push_to_talk | false | the mic stays closed until you press Enter, for one turn |
address_me | false | only turns that start with its name count, for a room with other people; the name alone opens the next turn |
memory | true | resume the last conversation, up to a week old |
narrate | handed-off | which sessions' finishes to narrate: handed-off, all, none |
code_colors | true | highlight code blocks in colour; off shows them as plain text |
name | claudio | what it answers to and calls itself, one to three words; the ears listen for it |
layout |
claudio doctor checks everything and runs one typed turn · claudio forget resets memory · claudio learn <rule> keeps a correction for good (the brain runs it when you correct it, once you say yes) · claudio unlearn <words> drops the one learned rule with those words · claudio set <key> <value> changes one setting · CLAUDIO_<KEY>=… overrides one run
A .claudio.json in a project root overrides any of these for that project, {"orchestrator": "Core"} being the usual one.
| "forget the rule about seven" | drops that learned rule |
| talk over it | pauses; a real turn cuts it, an "mm-hm" lets it go on |
| type a line | a turn, for when you can't talk; what you type shows on the state line |
inline |
or split: your turns on the right, claudio's on the left; plain lines under 50 columns |
backend | cmux | where your sessions live: cmux (its panes) or bb (its threads); bb's panel always runs claudio with bb; see platforms |
mouth | deepgram | or elevenlabs: put the key in secrets.json as elevenlabs_api_key or export ELEVENLABS_API_KEY; elevenlabs_voice is a voice id; or local, Kokoro on this Mac with no key: brew install espeak-ng, install claudio[local], pick local_voice, local_speed, and local_model (compressed, the default and about twice as fast, or full) |