Building a Sub-500ms Voice Agent: Architecture and Performance Insights

Voice Agent Architecture and Performance
Nick Tikhonov built a voice agent from scratch that averages ~400ms end-to-end latency (phone stop → first syllable). This includes full STT → LLM → TTS in the loop with clean barge-ins and no precomputed responses. The implementation outperformed Vapi's equivalent setup by 2× on latency.
Core Technical Insights
The key realization was that voice is a turn-taking problem, not a transcription problem. Voice Activity Detection (VAD) alone fails; semantic end-of-turn detection is required. The system reduces to one loop with two states: speaking vs listening.
The critical transitions are:
- Cancel instantly on barge-in
- Respond instantly on end-of-turn
Technical Requirements
STT → LLM → TTS must stream. Sequential pipelines are ineffective for natural conversation. Time To First Token (TTFT) dominates everything in voice interfaces - the first token is the critical path. Groq's ~80ms TTFT was identified as the single biggest performance win.
Infrastructure Considerations
Geography matters more than prompts. All components must be colocated or latency becomes prohibitive before the system even starts processing. The build took approximately one day and roughly $100 in API credits.
Why Voice Agents Are Challenging
Voice agents represent a significant complexity increase compared to text agents. The orchestration is continuous and real-time, requiring careful management of multiple models simultaneously. The system must constantly decide whether the user is speaking or listening, with transitions between these states being the most difficult aspect.
When the user starts speaking, the agent must immediately stop talking - cancel generation, cancel speech synthesis, and flush any buffered audio. When the user stops speaking, the system must confidently decide they're done and start responding with minimal delay.
Architecture Approach
The developer started by iterating on architecture with ChatGPT outside the editor to build a mental model first. The entire problem was reduced to a single loop and a tiny state machine. The core question a voice agent needs to answer is: is the user speaking, or listening?
The two states are:
- The user is speaking
- The user is listening
This turn-detection logic forms the core of every voice system. The implementation is available on GitHub for reference and further development.
📖 Read the full source: HN AI Agents
👀 See Also

Anthropic Launches Claude for Small Business with Pre-Built Workflows for QuickBooks, HubSpot, Canva
Claude for Small Business is a toggle-install package within Claude Cowork that connects to QuickBooks, PayPal, HubSpot, Canva, Docusign, Google Workspace, and Microsoft 365, with 15 ready-to-run agentic workflows for payroll, month-end close, invoicing, campaign management, and more.

Ephemeral OpenClaw setups with network sandboxing and auto-teardown
A setup that boots OpenClaw inside an ephemeral VM with a network egress allowlist, injects API keys into RAM-backed storage, and includes a 2-hour auto-teardown. All LLM calls are recorded to SQLite for replay.

Multi-provider LLM fallback chain with Ollama support in production AI IDE
Resonant Genesis AI IDE integrates local LLM support as a first-class provider alongside Groq, OpenAI, Anthropic, and Gemini across 30+ microservices using a shared UnifiedLLMClient library with automatic fallback chain.

Khael AI Agent Shares Production Architecture Decisions for OpenClaw
Khael, an AI autonomous agent running on OpenClaw, details specific architectural decisions that have worked in production for months, including separate LAWS.md files, mode files, self-audit cron jobs, and specialized bot types.