This page is about models that you operate. You may only want to point at
a hosted realtime endpoint (yours or a vendor’s) without a control plane.
That path is BYO Speech-to-Speech
or BYO ASR / LLM / TTS. You set
an endpoint host and a key, and you are done.
Status: what’s production-ready
Be clear-eyed about what is shipped and what is still in hardening, before you route regulated traffic. Current status:How it fits together
The control plane does one job. It keeps a live picture of your model fleet and puts each session on the right replica. It owns four roles. It owns nothing about your model’s weights or serving framework.Replica discovery
Watches your serving cluster (for example, a Kubernetes namespace). Keeps
a live roster of ready model replicas as you scale them up and down.
Health & load awareness
Scrapes each replica’s health and load signals continuously. Thus a
saturated or unhealthy pod leaves the rotation before it drops a call.
Session routing
Applies a routing strategy (least-loaded, session-affinity, and similar
strategies) to pick a replica per session. Keeps a conversation pinned to
that replica.
QUIC transport
Carries requests to the chosen replica over QUIC, not over a legacy proxy
hop. The routing brain is standard model-serving infrastructure. Only the
transport underneath it is swapped.
What you serve
You bring the model. ClutchCall routes to it. Two shapes are supported today, with different maturity:- Duplex speech-to-speech (preview)
- Language model for a cascade (shipped)
A single open-weights model consumes audio and emits audio on one
streaming session. There is no separate transcription or synthesis stage.
This is the lowest-latency and most natural option. It is also the path
that is still in hardening.Serve the model behind a realtime WebSocket on your GPUs. Register the
endpoint. Set the agent’s provider to the self-hosted duplex provider
(
omni). See
BYO Speech-to-Speech
for the full agent config.Some open-weights duplex models have no server-side VAD. They never
tell you when the caller stopped talking. 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.
Wire it up
1
Stand up your model replicas
Serve your chosen model on your GPUs. Put it behind a realtime WebSocket
(duplex) or an OpenAI-compatible completions endpoint (cascade LLM). Run
as many replicas as your call volume needs. The control plane handles the
replicas as a pool. To scale out, you only add replicas.
2
Let the control plane discover the fleet
Point ClutchCall Inference at your serving cluster. It picks up ready
replicas. It begins to track their health and load. It starts to route.
You maintain no static endpoint list as you scale.
3
Set the provider on the agent
In the agent config, name the self-hosted provider and your model. Supply
the endpoint and the optional bearer token per workspace. Credentials are
stored per tenant and never shared across workspaces.
Edit these fields in the console at
agent.clutchcall.dev or through the
control-plane API.4
Prove it on a staging number
Point a staging number or trunk at the agent. Place calls. Watch
turn-taking, barge-in, and end-to-end latency before you move production
traffic. This is the preview boundary. If a replica refuses the session,
the runtime logs the refusal. The call then falls back to a silent
passthrough and does not drop.
Why self-host
Data residency
Call audio and transcripts never leave your infrastructure. The model
runs where your compliance boundary is. This pairs naturally with a voice
gateway that also runs on-prem.
Model choice & control
Run the exact open-weights model, version, and fine-tune you want. Change
it on your schedule. You do not wait on a vendor’s model lifecycle.
Cost at volume
At steady, high call volume, your own amortised GPUs can beat per-minute
realtime API pricing on the inference leg.
No new proxy tier
The control plane reuses standard model-serving routing but carries
traffic over QUIC. Thus you skip an extra proxy hop on every request.
Next steps
BYO speech-to-speech
The full duplex agent config, including the self-hosted
omni provider.BYO ASR / LLM / TTS
Self-host the language model stage of a cascade and mix in hosted speech.
Turn detection & barge-in
Learn what to tune when a self-hosted model has no server-side VAD.
Runtime configuration
Every runtime knob: providers, budgets, and guardrails.

