Run a cascaded agent when you want to pick the best model for each stage instead of a single duplex model. The runtime chains three provider sessions per call:
You choose each provider independently in one agent-config.yml. You drop in the credentials. The ClutchCall Agent Runtime then opens a streaming session with each vendor on the caller’s shard. You write no code. The runtime assembles the pipeline from config.
Do you prefer a single low-latency duplex model? See BYO speech-to-speech. That path sets pipeline_mode: realtime and hands the whole turn to one provider (OpenAI Realtime, Gemini Live, and others). A cascade gives you more control and lets you swap each stage. Speech-to-speech gives you the lowest turn latency.

Set the pipeline

1

Choose your three providers

Pick one id from each table below. A bare cascade falls back to the defaults: deepgram for ASR, openai for LLM, and elevenlabs for TTS. Thus you can start and override only the stage you care about.
2

Add credentials

Each provider reads a per-tenant key. The runtime resolves the key at call setup (see Credentials). Set the keys for the providers you selected. The runtime refuses to start an agent that has no usable provider key.
3

Write agent-config.yml

Set pipeline_mode: cascaded and the per-stage provider/model/voice fields. The full example is below.
4

Save and place a test call

The control plane hydrates the config into the runtime. No rebuild is necessary. Place a call. Then watch the latency breakdown to see per-stage timing (ASR final, LLM first token, TTS first audio).

agent-config.yml

agent-config.yml
The runtime processes audio as PCM16 LE at 8 kHz end to end. The runtime feeds and drains every provider you pick at that rate. It opens Deepgram with encoding=linear16. Some providers natively want 16/24 kHz; the runtime resamples for them.

ASR providers

Set asr_provider. You can also set asr_model; the runtime forwards it as the provider’s model hint.
More streaming ASR ids exist. They give Indic and regional coverage, and self-hosted transcription on a co-located model server. See Self-hosted inference. Deepgram is the recommended default for English telephony.

LLM providers

Set llm_provider and llm_model. Tool calling runs in the LLM stage. See Tool calling.
If the primary provider fails after llm_max_retries, llm_fallback_provider runs a different provider entirely. Thus a vendor incident degrades one turn and does not drop the call. This is a resilience path, not a load balancer.

TTS providers

Set tts_provider. Put the provider’s voice id in tts_voice.
Streaming TTS providers emit audio as the LLM text arrives. This keeps first-audio low. Sometimes a provider cannot open a streaming session, for example because of a missing voice or a bad key. Then the runtime falls back to a one-shot synthesis for that turn, so the caller still hears a reply.

Credentials

Provider keys are per-tenant. Set them in the ClutchCall console at agent.clutchcall.dev. The control plane resolves the keys at call setup, seals them at rest, and injects them into the pipeline. The keys are never baked into agent-config.yml. For single-tenant or local development, the runtime also reads keys from the environment as a fallback:
If an agent’s selected providers have no usable key, the runtime refuses the agent at session creation with a clean error. The agent does not start and then fail mid-call. Check that each stage’s key is present before you route live traffic to the agent.

What runs around the cascade

  • Turn detection. A cascade uses local, on-device VAD by default. The runtime owns endpointing and barge-in; it does not use a cloud provider’s server VAD. Tune the thresholds, the barge-in hold window, and the idle watchdog on the turn detection page.
  • Language. The language hint prepends a hard directive to the system prompt. The model then answers in your market’s language and does not mirror the caller.
  • Session limits. Connect, idle, and max-session deadlines apply per stage. See Session lifecycle.
Backchannel suppression in a cascade is acoustic. It uses utterance duration plus a hold-and-confirm barge window. Short “mhm”/“ok” replies do not interrupt the agent. Lexical gating (“stop” vs “ok”) is not built. Plan around the acoustic behavior. See turn detection.

Next steps

Runtime configuration

This reference lists every knob: turn detection, budgets, guardrails, and codecs.

Speech-to-speech

Trade per-stage control for the lowest turn latency with a single duplex model.

Tool calling

Give the LLM stage HTTP, MCP, and client tools.

Latency breakdown

See per-stage ASR / LLM / TTS timing on a live call.