Natural voice conversations with Claude Code, Codex, and Antigravity, fully local on Apple Silicon.
Talk through a bug, redirect a task, or hear a quick update when your hands are busy or your eyes need a break. Your coding agent still does the thinking; Cadence Code simply handles speech.
- Local speech: TTS and STT run on your Mac with MLX.
- Natural turns: speak, listen, interrupt, and continue without reloading models.
- Explicit control: Cadence Code listens only after you start a conversation.
- No extra reasoning layer: no daemon, cloud speech service, or second language model.
Requires an Apple Silicon Mac running macOS 14+, Python 3.11-3.14, a microphone, and an output device. Internet access is needed for installation and the first model downloads.
/plugin marketplace add michael-L-i/cadence-code
/plugin install cadence-code@cadence-code-marketplace
Restart Claude Code, then run:
/cadence-code:start-talking
codex plugin marketplace add michael-L-i/cadence-code
codex plugin add cadence-code@cadence-code-marketplaceStart a new Codex session, then run $start-talking or choose Start Talking
from /skills.
Codex plugins work in the CLI and desktop app. The IDE extension does not yet support them.
git clone https://github.com/michael-L-i/cadence-code
agy plugin install ./cadence-codeRestart Antigravity, then run /start-talking.
On first run, Cadence Code selects recommended defaults, asks for microphone
access, and downloads the speech models automatically. If Claude Code is still
finishing the one-time setup, run /reload-plugins when prompted and start
again; other hosts just need a restart.
| Action | Claude Code | Codex | Antigravity |
|---|---|---|---|
| Start a conversation | /cadence-code:start-talking |
$start-talking |
/start-talking |
| Interrupt and redirect | /cadence-code:jump-in |
$jump-in |
/jump-in |
| Change speech models | /cadence-code:voice-settings |
$voice-settings |
/voice-settings |
| End and release models | /cadence-code:wrap-up |
$wrap-up |
/wrap-up |
You can also say "stop" or "goodbye" to end a conversation.
Cadence Code runs as a lightweight stdio MCP server beside your coding agent. It loads local speech models only when a conversation starts, keeps them warm between turns, and releases them when the conversation ends.
Raw audio and speech inference stay on your Mac. Your transcript is returned to your coding agent, which decides what to do and composes the exact response spoken back to you. See Cadence Code privacy for the complete boundary.
Only one Cadence Code conversation can use the microphone and model memory at a time.
Voice models and download sizes
| Model | Tier | Language | Download |
|---|---|---|---|
| Pocket TTS 100M | Lightweight | English | 236 MB |
| Kokoro 82M | Lightweight | English | 389 MB |
| Chatterbox Turbo 350M | Balanced | English | 417 MB |
| Qwen 0.6B | Highest quality | English | 1.97 GB |
| Model | Tier | Language | Download |
|---|---|---|---|
| Moonshine Base 61M | Lightweight | English | 248 MB |
| Parakeet 110M | Balanced | English | 459 MB |
| Parakeet 0.6B v3 | Highest accuracy | 25 languages | 2.51 GB |
Pocket TTS and Parakeet 110M are the defaults. TTS is currently English-only; choose Parakeet 0.6B v3 for multilingual transcription. Follow each linked model card for its license terms.
Use the voice settings command to choose models. Advanced model, voice, speed,
endpointing, and audio-device settings live in config.toml:
- Codex, Antigravity, and direct development:
~/.cadence-code/config.toml - Claude Code: the plugin's data directory
Model weights use the shared Hugging Face cache at
~/.cache/huggingface/hub. Depending on your choices, downloads require about
500 MB to 4.5 GB.
Troubleshooting
- No microphone or output: allow mic access for your coding agent in System Settings > Privacy & Security > Microphone, check the configured audio devices, and restart the host.
- Setup or download fails: check your Python version, internet connection, and free disk space, then restart the host to retry.
- Session already in use: stop Cadence Code in every Codex, Claude Code, Antigravity, and development session.
- An update still shows the old version: fully exit every host process that loaded Cadence Code, then start a new one.
For checkout-based diagnostics:
uv run --locked cadence-code doctor
uv run --locked cadence-code listen-testUpdating and uninstalling
To update, rerun the marketplace and plugin update commands for your host, then fully restart it. A running MCP process is not replaced in place.
To uninstall:
# Codex
codex plugin remove cadence-code@cadence-code-marketplace
codex plugin marketplace remove cadence-code-marketplace
# Claude Code
claude plugin uninstall cadence-code@cadence-code-marketplace
claude plugin marketplace remove cadence-code-marketplace
# Antigravity
agy plugin uninstall cadence-codeAntigravity updates the same way: pull or re-clone the repository and rerun
agy plugin install.
Configuration, private environments, and shared model weights may remain after
uninstalling. Codex and Antigravity data lives in ~/.cadence-code; model
weights live in the Hugging Face cache.
uv.lock is the source of truth for local development and CI.
uv sync --locked --python 3.13
uv run --locked cadence-code doctor
./dev check # tests + plugin validation
./dev claude # local branch test in Claude Code
./dev codex # local branch test in Codex
./dev agy # local branch test in AntigravitySee AGENTS.md for the project map, CONTRIBUTING.md before changing dependencies, and RELEASING.md for release details.
Questions and ideas are welcome in GitHub Discussions. Use the issue forms for bugs and feature proposals.
Cadence Code is released under the MIT License. Please follow the Code of Conduct, and report security issues privately as described in SECURITY.md.