A packaged adapter now ships. Most readers want that instead.
pipecat-telequick provides a first-class Pipecat transport
(TeleQuickTransport) over the external-agent QUIC plane, with one pipeline
per routed call. See
Pipecat + ClutchCall Transport.
This cookbook remains the raw MoQT audio-bridge path. Build the glue yourself
when you need custom framing, custom mixing, or a runtime that the adapter
does not cover.The real seam: subscribe uplink, publish downlink
Skipagents.attach and run the bridge yourself. Ask for pcm16 so that
Pipecat gets raw audio. The bridge transcodes the PSTN (G.711) leg for you.
This is stock SDK.
- TypeScript
- Python
Wrapping the bridge as a Pipecat transport
The bridge above already gives you the two hooks that a PipecatTransport
needs. onUplink produces input frames. publishDownlink consumes output
frames. A dedicated transport would wrap those into Pipecat’s input() /
output() processors so that the pipeline runs unchanged.
Illustrative — this transport is not shipped.
MoqtBridgeTransport below
does not exist as a package. It shows the design shape only: what a
first-class adapter would wrap around the real audio bridge. Do not
pip install it.- Resample between Pipecat’s frame rate and the runtime’s 8 kHz PCM16 audio bus.
- Keep the room-scoped MoQT namespaces valid.
- Carry Opus rather than PCM on browser legs.
onUplink/publishDownlink glue directly.
What ships today instead of an adapter
- WebSocket audio on-ramp
- Raw MoQT primitives
- VENDOR_BRIDGE (LiveKit/Vapi/Twilio)
Pipecat already speaks WebSocket audio, and ClutchCall accepts a bespoke
WebSocket audio sender as a media leg. To use this path:
- Point Pipecat’s WebSocket server transport at that on-ramp.
- Route the trunk’s inbound rule to your endpoint.
- Let the SIP gateway terminate the carrier while Pipecat drives the conversation.
Related
Pipecat + Transport
The full conceptual framing and the on-ramps that ship today.
Bridge a LiveKit Agent
The vendor-bridge sibling for a LiveKit backend.
Stream to your own ASR
The uplink-subscribe half of the bridge, on its own.
Keep Your Existing Runtime
Adopt only the transport and keep your own agent loop. This is the Pipecat pattern.

