You have a working LiveKit agent. You want a phone call or a browser leg to reach it over ClutchCall’s QUIC transport. You do not want to edit the agent, and you do not want to stop your LiveKit server. This page shows the vendor-bridge front-proxy. The voice gateway terminates the caller edge. It then relays the audio to a small bridge process. The bridge process joins your LiveKit room as an ordinary participant. Your agent code does not change.
Most agents do not need this page. If you can remove the LiveKit server, install the transport pluginlivekit-plugins-clutchcall / @clutchcall/livekit-transport — into your agent process instead. Then you do not need the sidecar, the room, or the credentials setup below. This is the recommended path: Run a LiveKit Agent on ClutchCall Transport.Use the front-proxy on this page when the room itself must stay — for example, other participants join it, or another part of your stack depends on it.

1. Configure a vendor-bridge agent

Give the agent a single VENDOR_BRIDGE entry node instead of an ASR→LLM→TTS cascade. With this configuration, the runtime runs no turn detection and no model. It sends the caller’s audio to your LiveKit room. It streams the room’s audio back.
agent-config.json
string
default:"livekit"
The external vendor to route to: livekit, vapi, or twilio. Change this one field to front-proxy a Vapi or Twilio agent with the same mechanism.
string
The LiveKit room that the bridge sidecar joins. For the other vendors, this is the Vapi assistant id or the Twilio app.
string
The key into your tenant’s sealed vendor credentials: your LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET. The system stores these values at rest and never inlines them.

2. Place a call at that agent

Attach the agent on originate. The gateway connects the audio automatically on answer. You do not need your own AudioBridge.
For inbound calls, attach the same agent to a number or trunk instead of dialing. See SIP Trunking and Number Provisioning.

3. Promote a live call to the LiveKit agent

If a call is already in progress, attach the vendor-bridge agent to the running sid. This moves the conversation to your LiveKit room in the middle of the call.

4. Run the bridge sidecar

The gateway side of the bridge — the vendor-bridge node plus the media handler — is shipped and in-tree. The process that joins your LiveKit room is a bridge sidecar. You run this sidecar next to your LiveKit deployment.
What is shipped and what you deploy. The vendor-bridge routing is part of the runtime and is shipped. The bridge sidecar is a separate component that you operate with your own LiveKit URL, key, and secret. For this reason, its exact CLI and image ship with the bridge, not with the gateway. The edge is shipped. The bridge is a thin component that you run.

Browser leg? The compat shim (preview)

If your LiveKit surface is a browser app (livekit-client) and not a server-side agent, you can skip the edge bridge. Change one import line to run the client’s audio directly over the transport.
Preview / experimental. The livekit-compat shim is an early-access browser package, not a shipped product. It covers the core voice path: publish the microphone, subscribe to remote audio, and send data messages. Video, screenshare, and per-participant E2EE key rotation are deferred. A session-setup race can sometimes deliver zero frames on connect. If this occurs, retry. The shim requires encoded media transforms and does not fall back to plaintext WebRTC. Today this limits it to Chromium-family browsers. A server-side Python (livekit.rtc) equivalent is not yet available. For the full deep-dive, see Keep Your Existing Runtime.

LiveKit Agent Integration

All three paths: transport plugin, front-proxy, and browser shim.

Run a LiveKit Agent on the Transport

The recommended path: a plugin in your agent process, with no sidecar and no room.

From Self-Hosted LiveKit

The wave-by-wave migration off a LiveKit SFU.

Custom Agent Runtime

The same front-proxy pattern for any non-LiveKit runtime.

WebRTC Diversion

How the compat shim sends encoded Opus over QUIC in the browser.