Are you the author? Sign in to claim
Talk to your Claude Code agent out loud. Hold a key, speak, and it answers in a real voice about a second later, with al
Never used Claude Code? Start at jaredrhod.com: pick your situation and it routes you to the right path.
Runs on: Claude Code only; the voice is built on Claude's agent SDK. The $20 Pro plan is enough.
Talk to your Claude Code agent out loud. Hold a key, say the thing, and it answers through your speakers in a real voice about a second later, with all its tools, your project context, and its own personality. Your AI finally has something to say back.
The hearing and the voice run local: free, offline models on your machine, no voice API keys, no per-word costs. The brain is the Claude Code you already have. On a Claude subscription, talking works like any other session and uses your plan's usage, with nothing extra to buy. This is the same voice loop I run every day, the one you see answering in about a second on my videos, shipped as working code so your agent's job is pointing it at your setup, not building it from scratch.
"resume_last_session": true in the config and every launch reattaches to your previous conversation instead of starting cold, so closing the window stops costing you the thread. Off by default. And the built-in voice has a pace dial: "speed" in the config, 1.0 native, 1.15 brisker. (Credit where due: both grew out of a community proposal by aram-cloudstak.)"thinking_sound": "" in the config.git clone https://github.com/jaredrhod/backtalk
cd backtalk
./install.sh
The installer sets up a Python environment, the two local AI models (speech-to-text and the voice), and the one system library they need. First run downloads the models (about 1 GB total); everything after is instant. Prerequisites: Claude Code with a Claude subscription, and uv (the installer offers to install it).
The easy way to configure it: open this folder in Claude Code and say "read backtalk.md and set me up." The wizard picks your agent folder, your key, and your voice with you, then test-fires the whole loop.
Already in a Claude Code session with your agent? One sentence does the whole install: "clone https://github.com/jaredrhod/backtalk.git, then read backtalk/backtalk.md and set me up." Your agent runs the installer and the wizard for you.
The manual way: copy backtalk.json.example to backtalk.json (your copy is untracked, so updates never touch it), then edit it. Point agent_dir at the folder whose CLAUDE.md is your agent, set name to your agent's name, pick a ptt_key. Then:
./run.sh
Hold the key. Talk. Let go.
Windows is the newest lane, and the setup runs through the wizard instead of the shell scripts (install.sh and run.sh are Mac and Linux). Open this folder in Claude Code and say "read backtalk.md and set me up": the wizard installs uv, espeak-ng, the environment, and the models natively, then launches with uv run python -m backtalk.main. The ElevenLabs key lives in the ELEVENLABS_API_KEY environment variable on Windows for now (Credential Manager support is planned). Hit something rough? The Windows notes in TROUBLESHOOTING.md carry the known quirks, and issues are welcome.
Two engines, and the setup wizard offers you both instead of quietly defaulting.
Built-in (Kokoro), the free one. Local, offline, no accounts, no per-word costs, and honestly a bit computer-sounding. The default voice is bm_lewis, a British male with exactly the butler register. Around 60 voices ship free; set voice in backtalk.json (the first letter picks the language: a is American, b is British, and there are Spanish, French, Hindi, Italian, Japanese, Portuguese, and Chinese voices too).
ElevenLabs, the natural one. The human-sounding voice most people actually want, on your own API key. The free tier is enough to audition it; day-to-day talking runs on the paid starter plan. The wizard walks the whole thing with you: account, key into the keychain, then an audition of real voices through backtalk's own mouth until one fits. Want the exact voice from my videos? It's called Tarquin in the ElevenLabs voice library: search it by name and you're done hunting. Under the hood it is: set elevenlabs.enabled and your voice_id in the config, and have ffmpeg installed. The key never goes in a file. On macOS, seed it into the Keychain once with security add-generic-password -a "$USER" -s backtalk-elevenlabs -T /usr/bin/security -w (it prompts for the secret) and backtalk reads it from there. Linux: secret-tool store --label backtalk service backtalk-elevenlabs. The ELEVENLABS_API_KEY environment variable works as a last resort, but an export in a shell profile is a plaintext key on disk; the keychain is the grown-up path. Kokoro stays wired in as the automatic fallback, so if the cloud fails the voice degrades instead of going mute, and logs/backtalk.log records why.
backtalk writes tiny state files while it listens, thinks, and speaks, so anything can watch them and react in real time.
bus_dir at this folder (or set signals_dir here to its folder) and it performs your actual conversation, idling, listening, thinking, and speaking along with the voice.barehands_state_dir at its state/ folder and the on-screen ring becomes your agent's face, breathing while idle, spinning while thinking, and pulsing with the voice while it talks.Mind (ai-memory-vault), mouth (this), face (ai-visualizer), hands (barehands).
"ask": gated actions get a spoken permission check, answered by voice or by typing, and silence for about 75 seconds means no. "bypassPermissions" is auto-approve: the agent acts without asking, exactly like a terminal session with approvals off. Never hand-edit the file to switch; tell your agent to change it (takes effect the next time the voice line starts), or say "stop asking for permission" / "start asking again" in a voice session for a flip that happens immediately and saves itself.TROUBLESHOOTING.md. (Hands-free is about the MICROPHONE. Approvals are a separate setting called auto-approve; the two never share a name.)backtalk/ptt.py compares each event against the one key you configured and discards the rest. It stores nothing and writes nothing anywhere. Ninety-one lines, so you can read all of it in a minute. macOS asks for Input Monitoring permission before it will run, which is the OS telling you what the program can see."mic_device" in backtalk.json to the input you want, by name ("MacBook Pro Microphone"), and the mic stays put whatever connects for output. A name that matches nothing falls back to the default with a log line rather than going mute. (Credit where due: this grew out of a proposal by MacphersonDesigns.)TROUBLESHOOTING.md covers the classics, and logs/backtalk.log has the receipts.Speech recognition by faster-whisper (MIT) running OpenAI Whisper models (MIT). Voice by Kokoro (Apache 2.0) with espeak-ng (GPL-3.0, used as a system tool) for phonemization. Built on the Claude Agent SDK.
backtalk improves continuously (several of its best fixes came from this community within hours of being reported). To update on macOS, double-click the Update icon setup left on your Desktop, or run ./update.sh in this folder. On Windows, or any time, say "pull the latest backtalk and tell me what changed" to your agent — it does the same job. Your config, your keys, and your agent's identity live outside the tracked files, so updates never touch them. Installed through fullstack-agent? ./fullstack-agent/update.sh (macOS) updates every piece at once and prints what changed.
A voice is better with a face and a memory. The visualizer performs the conversation on screen while you talk, and the memory vault is what your agent actually speaks from, so it remembers you between sessions.
Free to use, and always will be. If this helped you out, you can buy me a coffee:
Copyright (c) 2026 Jared Rhodenizer.
Licensed under the GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later). Use it in your business, commercially, for free. Run it, change it, build your workflow on top of it, and charge for the work you do with it. The one rule is that it stays open: if you hand it to someone else, or run a modified version as a service other people use, your version ships under this same license with its source available. Credit me when you build on it. Want it inside a closed-source commercial product? Email license@jaredrhod.com. Full terms are in the LICENSE file and at https://www.gnu.org/licenses/agpl-3.0.html
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Design enforcement with memory — keeps your UI consistent across a project
Detects 37 AI writing patterns and rewrites text with human rhythm across 5 voice profiles
WCAG accessibility audit — automated scanning, manual review, remediation