Building a voice-controlled multi-agent system on top of Claude Code

A developer on r/ClaudeAI built a weekend project that adds voice control to Claude Code on macOS, complete with a wake word, WebRTC voice loop, and a multi-agent orchestration system. What started as a convenience hack turned into a system where a lead agent decomposes tasks, recruits sub-agents, and runs them in parallel with auto-triggered QA passes.
How it works
- Wake word: "Yabby" triggers the voice loop. The developer chose a custom wake word to avoid conflicts with Siri or other assistants.
- Voice loop: WebRTC handles real-time audio streaming. The system uses Anthropic's Realtime API for speech-to-text and text-to-speech; target latency is under 300ms, but the API sometimes causes delays.
- Lead agent: Receives the voice request, performs a discovery phase, creates a project plan, and recruits a small team (manager + 2-3 sub-agents) to execute steps.
- Parallel execution: Sub-agents run in parallel where possible, sequentially otherwise. Each agent gets its own Claude Code CLI session with a separate thread — conversations don't bleed.
- Auto-QA: When a sub-agent finishes, a review pass is triggered with a 5-second debounce to prevent pile-ups. During testing, one agent caught a bug written by another agent — an emergent behavior the developer didn't expect.
- Plan approval modal: Before any agent executes, a modal pops up for the user to vet the plan. This prevents the system from running unverified actions.
Pain points
- Speaker verification: Uses cosine-similarity on speaker embeddings. The threshold is hard to tune — too tight rejects the user when they have a cold; too loose allows anyone in the room to trigger commands.
- Locale issues: French was the default locale because the code was written that way. The developer is slowly fixing it.
- Background task lifecycle: When the parent Claude Code CLI process exits, background tasks die silently. The developer wrote an OS-level PID watcher with a bookkeeper shell script to track which long-lived servers have crashed.
- Over-planning: The lead agent sometimes produces a four-phase project plan for trivial requests like renaming a file.
Open questions
The developer is still figuring out how to reduce verbosity in the QA phase, whether to let sub-agents recruit their own sub-agents (recursive delegation), and how to keep voice latency under 300ms when the Realtime API gets cranky. They're also curious how Anthropic's official voice mode (rolled out to 5% of users) will handle multi-agent coordination.
📖 Read the full source: r/ClaudeAI
👀 See Also

PicoClaw Fails to Build F1 AI Agent, Burns $20 in API Credits
A developer attempted to build an F1 information bot using PicoClaw on a Raspberry Pi Zero 2W, but the tool defaulted to version 11, generated hallucinated Python code, and consumed $20 in DeepSeek API credits without producing a working solution.

Exploring API-to-API Interactions: A Closer Look at Automation
A recent discussion on Reddit delves into the intricacies of API-to-API phone calls, focusing on practical implementation and potential challenges using tools such as Postman and Twilio.

Claude Code LSP: Enabling Language Server Protocol for Faster, More Accurate Code Navigation
Claude Code ships without LSP enabled by default, but enabling it transforms code navigation from 30-60 second grep searches to 50ms queries with 100% accuracy. The setup requires a flag discovered through a GitHub issue rather than official documentation.

cstat: A Native Rust Status Line for Claude Code with 2ms Performance
cstat is a native Rust binary that replaces claude-hud's 62ms status line with a 2ms implementation by eliminating 24 subprocess spawns per invocation. It displays model info, rate limits, git status, context window usage, active tools, subagents, and task progress.