Run the models on your own hardware. Instead of pointing an agent at a cloud realtime API, you can serve an open-weights duplex speech-to-speech model — or the language model behind a cascade — on GPUs in your own datacenter, and have TeleQuick Voice route each call to them. The audio never leaves your infrastructure, you pick the exact model and weights, and there is no per-minute vendor bill on the inference leg. The piece that makes this practical is TeleQuick Inference — a control plane that sits between the voice gateway and your fleet of model replicas. You stand up the replicas; the control plane finds them, watches their health and load, and steers each new session to the best one over QUIC. Your agents keep the same config shape they use for any other provider.
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.
The control plane is shipped and routes text completions (/v1/chat/completions-shaped requests) to your replicas over QUIC in production. The duplex speech-to-speech audio path — a single model that takes audio in and speaks audio out — is wired end-to-end in the runtime but has not yet been verified live against production carriers. Treat the self-hosted duplex model as preview: prove turn-taking and latency on a staging number before real calls.
Current status:
CapabilityStatus
Control plane: replica discovery, health/load tracking, QUIC routingShipped
Self-hosting the language model stage of a cascadeShipped (text path)
Self-hosting a duplex speech-to-speech model end-to-end on a live callPreview — not yet carrier-verified
Self-hosting a standalone ASR or TTS stage on the control planeNot 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.
For a spoken conversation, the duplex audio adapter lives in the runtime, next to the media path — it opens the realtime session, forwards each PCM chunk, and streams the model’s spoken reply back onto the call, resampling for you. The control plane routes; the runtime speaks. That split is why interrupts stay instant: barge-in is wired into the media plane in-process, not across the control plane.
call media ─▶ agent runtime ─▶ TeleQuick Inference ─▶ your model replica
  (in the           │  (duplex audio      (discover · health ·      (GPUs you
   voice gateway)   │   adapter)           route · QUIC)             operate)
                    └─ turn detection & barge-in stay in the media path

What you serve

You bring the model; TeleQuick routes to it. Two shapes are supported today, with different maturity:
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

1

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.
2

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.
3

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.
FieldValue
provideromni (duplex) or your self-hosted LLM provider (cascade)
modelthe model name you serve (e.g. my-omni-8b)
Endpointcontrol-plane / replica host (host[:port], default 443)
Tokenoptional bearer token for your endpoint
Edit this in the console at agent.telequick.dev or through the control-plane API.
4

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.