The two detection modes
silero is the default because most pipelines are cascaded
(for example, Deepgram → Anthropic → ElevenLabs) and need a local
trigger. The runtime auto-promotes to server_vad only when the agent’s
entry node is REALTIME AND the operator did not supply an explicit
type.
Configure turn detection per agent
Put aTurnDetection block in your agent config:
server_vad:
type: silero explicitly.
Tune when the agent replies
These are the timings that you will change most often. Start with the defaults. Lower them for faster replies. Raise them for callers who pause to think.Know where barge-in actually works
This is an honest scorecard. Where it says “no”, the agent will continue to talk over the user. Treat this as a known limitation, not a configuration error.Agent LLM/ASR/TTS providers
WebRTC / streaming vendor adapters
For
❌ vendors, the AI’s TTS continues to stream. ClutchCall silences
the playback locally, but the AI is unaware. For latency-sensitive UX,
prefer SIP/RTP or Browser. After the adapter work lands, Twilio/Vapi
will also be good options.
Common gotchas
- Realtime entry node + explicit
type: silero: this works, but you do VAD twice. The OpenAI server-side VAD still fires. It can producespeech_startedevents that the runtime ignores. Pick one mode. silence_threshold_mstoo low (< 300): end-of-utterance fires on inter-word pauses. The agent interrupts the user mid-sentence.- Cascaded pipeline with
server_vad: only the realtime model can produce server-VAD events. A Deepgram → Anthropic → ElevenLabs pipeline withserver_vadwill never emit a turn boundary. This is a misconfiguration. Usesileroinstead. - HTTP LLM “barge” feels delayed: Anthropic/Gemini/OpenAI HTTP run to completion server-side. ClutchCall silences the audio playback, but the server still bills you for the full response. For tight barge-in budgets, use a Realtime model.
How it works
Barge-in feels instant because the interrupt travels one control path end to end. You configure the mode. The plumbing is already wired. When local VAD trips, this chain fires:source: server_vad when the AI provider
reports that the user spoke first (e.g. OpenAI Realtime’s
input_audio_buffer.speech_started). Both sources land in the same
handler. Node code is thus detection-mode-agnostic.
Where to dig further
get_page rpc/audio-frames— wire format for the PCM/PCMU stream that feeds the gateway VAD.get_page rpc/method-ids—Bargemethod ID for operator-initiated interrupts.get_page admin/agent-dags— fullTurnDetectionschema in the agent config.

