Push-to-talk for Claude Code and Codex in tmux. Speak English, Uzbek, Korean, or all three in one sentence. The text lands in your agent's prompt, and when it's done, its answer is read back to you in a local voice.
git clone https://github.com/imurodl/tmux-voice && cd tmux-voice && ./install.shMost of us don't think in one language. The language is detected on every recording, so switching mid-sentence just works. These are real transcripts from the test recordings, unedited.
A small local daemon does the work. Hammerspoon catches the key; nothing runs in the cloud except the transcription itself.
While you hold the key, the mic records. Press any other key to cancel.
Your repo, branch, changed files, dependencies and SSH hosts go along as key terms.
ElevenLabs Scribe v2, with Gemini 3.5 Transcribe as automatic fallback.
Into the active tmux pane without pressing Enter, or the pane you named: "Codex, …".
When the agent finishes, its final answer is read aloud by a voice running on your Mac: now, or when you come back to that pane.
Before building this, eight speech-to-text setups were tested on 17 real recordings of mixed Uzbek and English dev prompts. Every recording went to every setup at once.
Lower is better
File, tool and library names; higher is better
One speaker, a MacBook microphone, 15 scripted clips plus two free-form ones. Your language and accent will give different numbers, so the tool ships with the same test page: uv run tmux-voice bench.
| Setup | Word error rate | Code terms right | Typical latency |
|---|
Nothing is submitted for you. Read it, fix a word, press Enter. Optionally end with "send it".
A focused tmux window gets the text, in any terminal or Zed. With an editor, Slack or a browser in front, it's typed there.
"cloud MD" becomes CLAUDE.md. "Cloud, run the tests" goes to Claude. Add your own rules.
Listening, Transcribing and Reading aloud in the tmux status line and the menu bar.
Only final answers are read, and nothing while the agent is still working. Ctrl+Option+Cmd+S stops or replays.
tmux-voice usage shows minutes spoken per day and the estimated bill.
Every edit to your configs is marked and backed up, and ./uninstall.sh removes it all. macOS only for now.
Cost: about $0.27 per hour of speech on Scribe v2. A heavy coding day is 30–60 minutes of talking, so a month of daily use is roughly $3–6.
Your agent subscription: barely affected. A spoken prompt adds a few dozen tokens to turns that process tens of thousands.
Reading answers aloud: free. The Kokoro voice runs on your Mac.
# install
git clone https://github.com/imurodl/tmux-voice
cd tmux-voice
./install.sh
# check everything is wired up
uv run tmux-voice doctor
# test providers on your own voice
uv run tmux-voice bench