Point your agent at a single duplex speech-to-speech model and skip the cascade entirely. A cascade chains speech-to-text, a language model, and text-to-speech. That is three network hops, three queues, and three places that add latency. With a duplex model, the caller’s audio streams straight into one model. The model listens and speaks on the same bidirectional connection. Fewer hops means the agent starts to reply sooner, and interrupts feel instant. You wire a duplex model the same way you wire any other runtime. Name a provider, a model, and a voice in the agent config. ClutchCall Voice opens the realtime session on the first inbound audio frame. It forwards each PCM chunk. It streams the model’s spoken response back onto the call. It resamples to and from the provider’s expected rate for you.

Speech-to-speech vs. cascade

Not every agent should be speech-to-speech. A duplex model is the fastest and most natural option. But a cascade (see BYO ASR / LLM / TTS) gives you independent control of each stage. You can swap the language model and keep the voice. You can run a fine-tuned transcriber. You can mix vendors. Choose duplex for latency and naturalness. Choose the cascade for control and model choice.

Supported models

The self-hosted duplex path is wired end-to-end in the runtime. But it is not yet verified live against production carriers. Treat it as preview. Validate turn-taking and latency on a staging number before you route real traffic.

Configure a duplex agent

1

Set the entry node to REALTIME

A duplex agent has a single node. Set entry_node: REALTIME. Give the node a provider, a model, and a voice. There is no separate ASR or TTS stage to configure.
2

Supply per-tenant credentials

Each workspace supplies its own keys. The keys are stored per tenant and never shared across workspaces. Set them in the agent console at agent.clutchcall.dev, or through the control-plane API:
3

Deploy and test

Save the agent. Point a number or trunk at the agent. Place a call. The runtime opens the realtime session on the first inbound frame. If the provider refuses the connection, the runtime logs the refusal. The call then falls back to a silent passthrough and does not drop.

Turn-taking on a duplex model

For a REALTIME entry node, ClutchCall Voice defaults to server_vad. The provider does its own endpointing and emits speech_started / speech_stopped. The runtime wires these events to barge-in. Thus in-flight audio is cut the instant the caller talks. You do not add a local turn detector.
Some self-hosted duplex models have no server-side VAD. In that case, the runtime owns the turn boundary with a local detector. It commits the input buffer when the caller finishes. This also prevents backchannels (“ok”, “mhm”) from waking the model. See Turn Detection & Barge-In for the knobs.

Greeting on inbound calls

Some carrier SBCs do not send you RTP until they hear yours. On an inbound call, the runtime asks the model to speak first, so the carrier’s media path opens. The model greets from your instructions. You can also pin an exact opening line. This behavior is on by default for inbound direct-media calls. No extra config is required.

Tools mid-conversation

The shipped realtime adapters advertise your tools in the session bootstrap. Thus the model can call HTTP and MCP tools during a spoken turn and speak the result. Configure the tools exactly as you would for a cascade. See Tool Calling.

Session budgets

Every realtime session is bounded, so a stuck provider cannot run forever:
  • Connect timeout — the handshake gets 5 seconds. After that, the runtime gives up and falls back.
  • Max session — the runtime closes a session at a 15-minute ceiling, even if the provider did not close it. Tune the lifetime, idle re-engage, and hangup budgets on Session Lifecycle.

Next steps

Cascade instead

Wire independent ASR, LLM, and TTS providers when you want per-stage control.

Turn detection

Tune barge-in, endpointing, and backchannel handling.

Self-hosted inference

Serve your own duplex model on-prem with the inference control plane.

All runtime knobs

Find models, codecs, budgets, and guardrails in one reference.