- Where your call audio and customer data are permitted to live.
- Whether you want to operate GPUs.
- How much of the stack you want to manage yourself.
The three pieces
Before you choose, know what actually runs. Every ClutchCall Voice deployment is three planes:Control plane
The control plane is the console at
agent.clutchcall.dev, the
tenant-scoped control-plane API at engine.clutchcall.dev, the Postgres-backed
config database, and the columnar analytics store behind your reports. It
holds agent configs, trunk definitions, call records, and recordings
metadata.Voice engine
The engine is the QUIC/HTTP-3 endpoint on
:443, the SIP gateway/B2BUA,
the RTP media plane, and the embedded agent runtime. Call audio flows
here. PSTN trunks, browser MoQT tracks, and the WebRTC fallback leg all
terminate here.Inference
Inference is the speech models. This is either a self-hosted
speech-to-speech model on your GPUs, or a hosted provider endpoint (OpenAI
Realtime, Gemini Live, Deepgram, ElevenLabs, and others) that the runtime
dials out to. Transcripts and generated audio are produced here.
Choose a model
- Managed cloud
- Self-hosted / on-prem
- Hybrid
We run all three planes. You bring an API key and an agent config. You
operate no infrastructure.
- You host: nothing. We host: the control plane, the engine, and (for the default runtime) inference.
- Media path: call audio lands on our engine. PSTN trunks point at
your per-tenant SIP host
<workspace-id>.sip.clutchcall.dev. Browsers connect to the QUIC endpoint on:443. - Best for: fast shipping, variable call volume, and teams that do not want to operate real-time media or GPUs.
There is intentionally no sandbox environment. Managed cloud is a
single production plane. Use a separate workspace for staging. Do not
expect a sandbox toggle. See
Managed Cloud quickstart.
Where data lives
The location of the engine decides data residency, because the engine is the only plane that touches raw call audio.
Two levers narrow the media footprint further, in any model:
- Direct media. Per-trunk
media_mode: directterminates RTP on the shard where the agent runs. Audio then crosses no extra hop. Useproxyonly for hostile-NAT carriers. See Sessions, Calls, Tracks & Streams. - Sealed credentials. Every provider key and SIP secret is encrypted at rest under your key-encryption-key, regardless of where the control plane lives.
When to self-host inference
Self-hosting the models is the most common reason to leave pure managed cloud. Use it when:1
Transcripts cannot leave your boundary
Your audio is regulated (health, finance, government), and you cannot send
speech to a third-party API. A self-hosted speech-to-speech model keeps
every transcript and generated token inside your GPUs.
2
You want model control
You need a specific fine-tune, a pinned model version, or a model that no
hosted provider offers. You serve it yourself, and the runtime routes to
it.
3
GPU economics beat per-minute pricing
At sustained concurrency, amortized GPUs can undercut metered realtime API
minutes. Self-hosting turns a variable per-minute cost into fixed
capacity.
The text-generation routing tier of the inference control plane is shipped.
The single speech-to-speech model path is not yet verified end-to-end in
production. If you plan a self-hosted-inference rollout, validate against
your own traffic before cutover. Details are in
Self-Hosted Models.
Next steps
Managed cloud quickstart
Ship a voice agent with zero infrastructure.
On-prem quickstart
Run the full stack in your own environment.
Self-hosted models
Serve your own speech models on your GPUs.
Voice architecture
Follow the end-to-end signalling, media, and runtime path.

