If you are new to the runtime, start with BYO ASR / LLM / TTS. That page shows the full cascade config file. This page shows only the ElevenLabs part.
Use ElevenLabs for text-to-speech
This is the common case. Keep your speech-to-text and language model. Let ElevenLabs speak the replies.1
Set the TTS stage in agent-config.yml
Set
tts_provider: elevenlabs. Put your ElevenLabs voice_id in tts_voice. ElevenLabs is the default, thus you can omit tts_provider. But a named provider keeps the config explicit.agent-config.yml
2
Add your ElevenLabs key
Provider keys are per-tenant. Set
ELEVENLABS_API_KEY in the ClutchCall console at agent.clutchcall.dev. The control plane seals the key at rest and injects it at call setup. The key is never stored in the config file. See Credentials.3
Save and place a test call
The control plane hydrates the config with no rebuild. Place a call. Check the latency breakdown. The TTS row shows time-to-first-audio for the ElevenLabs stage.
How it streams
The ElevenLabs TTS session opens a streaming connection (/stream-input). Audio starts to flow as the language model’s text arrives, not after the full sentence is generated. This keeps first-audio low. The default model is a low-latency turbo model. The synthesizer requests linear PCM. The runtime resamples the PCM into its 8 kHz PCM16 call bus for you.
A streaming session can fail to open because of a missing voice or a bad key. In that case the runtime falls back to a one-shot HTTP synthesis for that turn. The caller hears a reply and not silence. Check the voice id and the key before you go live to stay on the streaming path.
Use ElevenLabs for speech-to-text
The same ElevenLabs key also enables a streaming speech-to-text stage. Setasr_provider: elevenlabs to transcribe with ElevenLabs instead of the default:
agent-config.yml
Deepgram is the recommended default transcriber for English telephony (see Deepgram). Use ElevenLabs ASR when you want one vendor and one key across the listening and speaking stages.
Use ElevenLabs Conversational AI
ElevenLabs Conversational AI (ConvAI) is a full duplex agent. ElevenLabs owns transcription, the language model, and the voice on one bidirectional connection. The runtime bridges the call audio to that connection. Configure ConvAI as a singleREALTIME node, in the same way as the other speech-to-speech providers:
agent-config.yml
string
required
Your ElevenLabs Conversational AI agent id. This field is mandatory. ConvAI dials a specific pre-built ElevenLabs agent, not a bare model name.
string
Overrides the voice configured on the ElevenLabs agent. Leave empty to use the agent’s own voice.
string
Overrides the agent’s system prompt for this call. Leave empty to use the prompt set in ElevenLabs.
Public vs. private agents. A public ElevenLabs agent connects without an API key. A private agent needs
ELEVENLABS_API_KEY in the tenant’s credentials.Credentials
One key covers all three surfaces (TTS, ASR, ConvAI). Set the key in the ClutchCall console atagent.clutchcall.dev. The control plane resolves the key at call setup and seals it at rest.
For single-tenant or local development, the runtime also reads the key from the environment as a fallback:
Next steps
Full cascade config
Wire ElevenLabs TTS alongside your chosen ASR and LLM in one config file.
Speech-to-speech
Run ConvAI or another duplex model as a single REALTIME node.
Turn detection
Tune barge-in and backchannel handling around the ElevenLabs voice.
Latency breakdown
See TTS time-to-first-audio on a live call.

