This page is about serving models you operate. If you just want to point at
a hosted realtime endpoint (yours or a vendor’s) without running a control
plane, that 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 versus what is still being hardened before you route regulated traffic. Current status:| Capability | Status |
|---|---|
| Control plane: replica discovery, health/load tracking, QUIC routing | Shipped |
| Self-hosting the language model stage of a cascade | Shipped (text path) |
| Self-hosting a duplex speech-to-speech model end-to-end on a live call | Preview — not yet carrier-verified |
| Self-hosting a standalone ASR or TTS stage on the control plane | Not yet — use a hosted endpoint for those stages today |
How it fits together
The control plane does one job: keep a live picture of your model fleet and put each session on the right replica. It owns four roles, and nothing about your model’s weights or serving framework.Replica discovery
Watches your serving cluster (for example, a Kubernetes namespace) and 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, so a saturated
or unhealthy pod is taken out of rotation before it drops a call.
Session routing
Applies a routing strategy (least-loaded, session-affinity, and similar) to
pick a replica per session and keep a conversation pinned to it.
QUIC transport
Carries requests to the chosen replica over QUIC rather than 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; TeleQuick 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 that consumes audio and emits audio on one
streaming session — no separate transcription or synthesis stage. This is the
lowest-latency, most natural option, and it is the path still being hardened.Serve the model behind a realtime WebSocket on your GPUs, register the
endpoint, and 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 and commits the input buffer when the caller
finishes, which also keeps backchannels (“ok”, “mhm”) from waking the model.
See Turn Detection & Barge-In.
Wire it up
Stand up your model replicas
Serve your chosen model on your GPUs 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 them as a pool, so
scaling out is just adding replicas.
Let the control plane discover the fleet
Point TeleQuick Inference at your serving cluster. It picks up ready
replicas, begins tracking their health and load, and starts routing — no
static endpoint list to maintain as you scale.
Set the provider on the agent
In the agent config, name the self-hosted provider and your model, and supply
the endpoint and optional bearer token per workspace. Credentials are stored
per tenant and never shared across workspaces.
Edit this in the console at
| Field | Value |
|---|---|
provider | omni (duplex) or your self-hosted LLM provider (cascade) |
model | the model name you serve (e.g. my-omni-8b) |
| Endpoint | control-plane / replica host (host[:port], default 443) |
| Token | optional bearer token for your endpoint |
agent.telequick.dev or through the
control-plane API.Prove it on a staging number
Point a staging number or trunk at the agent and 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 it and the call falls back to a silent passthrough rather than
dropping.
Why self-host
Data residency
Call audio and transcripts never leave your infrastructure — the model runs
where your compliance boundary is. Pairs naturally with running the voice
gateway itself on-prem.
Model choice & control
Run the exact open-weights model, version, and fine-tune you want, and change
it on your schedule — no waiting on a vendor’s model lifecycle.
Cost at volume
At steady, high call volume, amortising your own 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, so 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
What to tune when a self-hosted model has no server-side VAD.
Runtime configuration
Every runtime knob: providers, budgets, and guardrails.