:443 plane.
The transport-first thesis
Many voice migrations stall because teams treat them as a full-platform port. This is not necessary. Your runtime already produces and consumes audio frames across a media boundary. That boundary is WebRTC’s SRTP, a WebSocket that carries PCM or µ-law, or RTP on a SIP trunk. In the migration, you re-point that one boundary at ClutchCall. Everything above it stays unchanged.What you keep
You keep your conversation loop, VAD and turn-taking, prompts and tools,
models and vendor credentials, call-control logic, and dashboards.
What you swap
You swap only the media transport. The media transport is the wire that
carries encoded audio between your runtime and the endpoint (browser, app,
or phone).
Pick your path
Choose the path that matches where your audio lives today. Each path re-points one boundary. The detail page for each path describes the cutover.From WebRTC
Keep the browser’s capture, echo cancellation, and Opus encoder. Divert the
encoded frames onto QUIC/MoQT instead of ICE/DTLS/SRTP. This path is
Shipped in the TypeScript SDK.
From Self-Hosted LiveKit
Install the transport plugin in your
livekit-agents worker. Then retire
the SFU. This path is Shipped. Or swap one import in a browser app.
That path is Preview.From Custom WebSocket Audio
Point a bespoke WebSocket audio sender at the engine’s WebSocket media
fallback. Or connect your runtime to the raw publish/subscribe primitives.
From Twilio Media Streams
Move a µ-law Media Streams WebSocket onto a SIP
PCMU trunk with zero
transcode. Or bridge it as an external media vendor.From Asterisk / FreeSWITCH
Re-point your SIP trunks and agent endpoints at ClutchCall’s built-in
B2BUA, registrar, and dialplan. This path is Shipped. You do not need a
separate SIP proxy.
Migration Checklist
Run this step-by-step cutover checklist after you pick a path.
What each path swaps
Status shows what ships today. “Shipped” paths are proven end-to-end.
“Preview” paths work for the core voice case. But they are not yet drop-in for
every API of the source product. Read the callouts on each path page before
you plan a cutover.
How a transport-first migration runs
Every path has the same shape. The per-source page has the detail. This section shows the sequence.1
Provision your workspace
Onboarding creates your per-tenant endpoints:
<workspace-id>.sip.clutchcall.dev
for phone traffic and <workspace-id>.webrtc.clutchcall.dev for browser and
app media. It also creates your relay at relay.clutchcall.dev. Nothing in
your runtime changes yet.2
Re-point one media boundary
Swap only the transport for the path you picked:
- Divert encoded WebRTC frames onto QUIC/MoQT.
- Or swap the LiveKit import.
- Or point your WebSocket sender at the engine’s media fallback.
- Or re-point a SIP trunk.
3
Verify audio both ways
Check that uplink audio (caller/browser → runtime) flows. Check that
downlink audio (runtime → caller) flows. Check quality. On telephony legs,
the media plane scores MOS, jitter, and loss per call. Compare these scores
against your old stack. See
MOS, Jitter & Loss.
4
Cut over gradually
Route a slice of traffic to the new transport. A slice can be a test DID, a
canary trunk, or a subset of browser sessions. Watch the dashboards. Then
widen the slice. Follow the
Migration Checklist for the full
cutover sequence.
Where the runtime line falls
Transport-first is one end of a spectrum. The minimal-change migration keeps your runtime and uses only the wire. You can also give the conversation loop to ClutchCall and bring only the models. That choice is a runtime adoption, not a transport swap. ClutchCall can run a cascaded ASR→LLM→TTS pipeline or a speech-to-speech provider for you.LiveKit Agents and Pipecat have packaged plugins. Other stacks have the
external-agent SDK or a bridge. For a
livekit-agents worker, install
livekit-plugins-clutchcall / @clutchcall/livekit-transport. For a Pipecat pipeline, install
pipecat-telequick. In both cases, your agent runs over our transport
directly. If you come from Twilio, Vapi, Plivo, or Telnyx, use the provider
starters. The starters port each vendor’s official sample onto the
telequick-agents external-agent SDK (see the
integration pages). If you keep a
vendor-hosted runtime in operation and put ClutchCall in front of it, that
is a config-level bridge. See
Keep Your Existing Agent Runtime.Next steps
Keep Your Existing Agent Runtime
Adopt the transport alone and leave your runtime in place. This page covers
the shim and the raw primitives in depth.
WebRTC Diversion
The encoded-frame tap moves a browser WebRTC pipeline onto QUIC. It does not
touch capture or the codec.
SIP Trunking
Re-point carrier trunks at the built-in B2BUA and registrar for telephony
migrations.
Migration Checklist
Run the ordered cutover checklist after you choose a path.

