Skip to content

How to choose an adapter

Every adapter wraps a different wire transport but exposes the same scenario.run() API. Pick by use case, then click through to the adapter page for the constructor, capabilities, gotchas, and a worked example.

If you want to compare specifics side-by-side, see the capability matrix.

By use case

The Languages column shows which SDKs ship the adapter today. Adapters marked Python-only are not yet ported to TypeScript (tracked in #563).

I want to…AdapterLanguages
Test a Twilio IVR (phone, DTMF)TwilioPython · TypeScript
Test an OpenAI Realtime agentOpenAI RealtimePython · TypeScript
Test a custom Pipecat botPipecatPython · TypeScript
Use a branded ElevenLabs Convai agentElevenLabsPython · TypeScript
Test a Gemini Live agentGemini LivePython · TypeScript
Test a LiveKit room agent (preview)LiveKit [preview]Python-only
Test a Vapi outbound dialer (preview)Vapi [preview]Python-only
Test a raw WebRTC datachannel agent (preview)WebRTC [preview]Python-only
Plug in your own STT + LLM + TTS pipelineComposablePython · TypeScript
Speak a custom WebSocket protocolWebSocketPython-only

What's next