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… | Adapter | Languages |
|---|---|---|
| Test a Twilio IVR (phone, DTMF) | Twilio | Python · TypeScript |
| Test an OpenAI Realtime agent | OpenAI Realtime | Python · TypeScript |
| Test a custom Pipecat bot | Pipecat | Python · TypeScript |
| Use a branded ElevenLabs Convai agent | ElevenLabs | Python · TypeScript |
| Test a Gemini Live agent | Gemini Live | Python · 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 pipeline | Composable | Python · TypeScript |
| Speak a custom WebSocket protocol | WebSocket | Python-only |
What's next
- Capability matrix — per-adapter feature support, wire transports, and shipping status.
- Getting started — install, env vars, and your first runnable voice scenario.
- Voice agents proposal — design rationale and full adapter API surface.
