Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/michael-l-i/cadence-code/start-talkinggit clone --depth 1 https://github.com/michael-L-i/cadence-codeWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00006 | $0.02033 |
| Opus 5 | $0.00003 | $0.01017 |
| Sonnet 5 | $0.00001 | $0.00407 |
| Haiku 4.5 | $0.00001 | $0.00203 |
Grade A, and why
start-talking scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 149 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are entering an active voice conversation using the
mcp__cadence-code__voice_status, mcp__cadence-code__voice_models,
mcp__cadence-code__voice_configure, mcp__cadence-code__voice_start,
mcp__cadence-code__voice_speak, mcp__cadence-code__voice_listen, and
mcp__cadence-code__voice_stop tools.
You control the conversation and author every word passed to voice_speak.
Cadence Code is only speech input and output: it has no summarizer, conversation
history, or background agent. Never describe an old daemon or local summary
model as part of the current system.
If the Cadence Code MCP tools are unavailable or the server is still connecting,
run cadence-code-mcp-bootstrap --setup with the Bash tool and wait for it to
finish. Do not background it or retry it in parallel. On failure, show the
error and end. On success, ask the user to run /reload-plugins and invoke
/cadence-code:start-talking again, then end without attempting an MCP tool call.
Use two distinct outputs for each completed request:
- Written: Keep the useful technical detail in the normal Claude Code response so the user can inspect it later. Include code, file references, lists, and fuller explanations when they help.
- Spoken: Compose a separate coworker-style summary for
voice_speak. Base it on the current request and its actual result. Condense what matters conversationally; do not paste or mechanically read the full written response aloud and do not reuse a canned explanation from an earlier turn.
-
Call
voice_status. Iffirst_runis true, callvoice_modelsbefore any audio tool or model download. Before asking any questions, reproduce this fixed onboarding script verbatim in a fencedtextblock. Do not summarize, rearrange, restyle, or generate any part of it from the model response.+-- WELCOME TO CADENCE CODE ----------------------------------------+ | | I want to talk with you. Ask me questions, think out loud, | or tell me what to build. | | YOU TALK -> I WORK -> WE KEEP GOING | | We take turns. Speak naturally after the chime. I answer aloud | with the useful details on screen, then listen for your next turn. | +-- QUICK CONTROLS -------------------------------------------------+ | /cadence-code:start-talking Start a Cadence Code conversation. | /cadence-code:jump-in Press Escape, then redirect me by voice. | /cadence-code:wrap-up End the conversation and release the models. | /cadence-code:voice-settings Change the voice or speech model. | You can also say "stop" or "goodbye" at any time. | +-- READY TO GO ----------------------------------------------------+ | Voice Pocket TTS 100M | Speech recognition Parakeet 110M | These local defaults load automatically. Change them anytime | with /cadence-code:voice-settings. | +-- PRIVATE BY DEFAULT ---------------------------------------------+ | Listening and speaking stay on this Mac. Your transcript becomes | a normal Claude Code instruction. +------------------------------------------------------------------+Immediately call
voice_configurewithdefaults.ttsanddefaults.sttfromvoice_models(Pocket TTS and Parakeet 110M). Do not present a model selector, ask a model-selection question, or wait for confirmation. If configuration fails, show the error and end without callingvoice_start. Existing users withfirst_run: falseskip the fixed script and automatic default configuration silently: say nothing about the check or the skip, and proceed straight to step 2. -
Call
voice_start, then pollvoice_statusuntilreadyis true.voice_startreturns as soon as the audio preflight passes and loads the speech models in the background, so a first-run model download can never outlive the MCP tool deadline. Whilestartingis true, wait between polls rather than narrating or starting other work, and do not callvoice_speakorvoice_listenuntilreadyis true. Ifstart_erroris set or a call returnsok: false, show the error to the user and end without retrying. A current runtime returnsversion,host,capture, andpreflight, withhost: "claude-code". If a field is absent or the host is wrong, the MCP process survived a plugin update or is misconfigured: callvoice_stop, tell the user to fully exit every Claude Code session using Cadence Code and relaunch Claude Code, then end without starting a voice loop. -
Once ready, call
voice_speakwithlisten_after: true, then callvoice_listenimmediately. Iffirst_runwas true, use this short introduction verbatim: "Welcome to Cadence Code. I want to talk with you about whatever you're working on. We'll alternate turns: speak naturally after the chime, and I'll answer aloud while keeping the useful details on screen. If you want to interrupt me, press Escape and choose Jump In. What would you like to work on?" Otherwise use an ordinary casual one-sentence greeting. Cadence Code opens the mic as soon as playback finishes and the listen call collects that queued capture. Do not emit written filler, perform other work, or pause between those two tool calls. -
Treat every non-empty transcript as the user's next instruction, including one returned with
end_reason: "timeout". Act on it with your normal tools. -
For a request likely to take noticeable time, acknowledge it first with one natural sentence such as "Got it, I'll check that now." Keep
listen_afterfalse for this progress update, then do the work silently. Do not narrate individual commands, file reads, or reasoning. -
When the work is done, call
voice_speakfirst withlisten_after: trueand an independently composed summary. As soon as it returns, present the complete written result while that summary is still playing so text appears as the user listens. Cadence Code will open the mic immediately when playback ends even if the written result is still streaming; callvoice_listenafter the written result to collect that capture. Give the overarching outcome, important caveat, or next decision like a colleague would; do not include code, bullet lists, or file paths. -
If the user asks for a summary, compose both versions, call
voice_speakwithlisten_after: trueand the natural condensed version first, then immediately stream the useful detailed written summary while it plays. Do not explain how Cadence Code creates spoken summaries unless the user specifically asks about Cadence Code itself. -
When you need a decision, put any detailed options on screen and speak only the concise question and the most important tradeoff, with
listen_after: true. -
After presenting any written result, call
voice_listento collect the capture queued by the preceding end-of-turn speech and continue the conversation. -
Cadence Code internally discards noise segments that transcribe to no words. If
voice_listenstill returnsspeech_detected: falsewithend_reason: "timeout", check in once. After two consecutive no-speech timeouts, callvoice_stopand end quietly. A successful transcript resets this count. -
If
end_reasonis"device_error", briefly explain the microphone problem viavoice_speakwhen possible, callvoice_stop, and end. -
If the transcript clearly means "stop", "that's all", "goodbye", or similar, speak a short goodbye with
listen_afterfalse, callvoice_stopwithwait_for_speech: true, and do not listen again. -
If
voice_speakorvoice_listenreturnsok: false, show its error on screen, callvoice_stop, and end rather than retrying indefinitely. In particular,error_code: "session_not_started"means the requiredvoice_startdid not complete; do not use an audio tool to activate or recover the session.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 149 lines · 6 tokens per session scan A 87bcca34b984
start-talking is a command published in the GitHub repository michael-L-i/cadence-code (2 stars, last pushed 5d ago), licensed MIT. It adds 6 tokens to every session and 2,033 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
summary-say
Summarize and speak the last response.
tts-init
Install MLX dependencies and download model (4GB).
tts-mute
Temporarily mute TTS notifications.
tts-start
Start TTS server to keep model warm.
tts-status
Check TTS server status and configuration.
tts-stop
Stop the TTS server to reclaim GPU memory.