pip install voxbridge

One SDK.
Every telephony platform.

Connect any WebSocket voice bot to Twilio, Genesys, Avaya, Cisco, Amazon Connect, FreeSWITCH, or Asterisk. Zero custom integration code.

bridge.py
from voxbridge import VoxBridge

bridge = VoxBridge({
    "provider": "twilio",
    "listen_port": 8765,
    "bot_url": "ws://localhost:9000/ws",
})

@bridge.on_call_start
async def handle_call(session):
    print(f"Call from {session.from_number}")

@bridge.on_audio
async def process_audio(session, frame):
    return frame  # forward to bot

bridge.run()

How it works

VoxBridge sits between your telephony provider and your voice bot

📞

Telephony Provider

Twilio, Genesys, Avaya, Cisco, AWS Connect, FreeSWITCH, Asterisk

mulaw / 8kHz

VoxBridge

Protocol translation, codec conversion, session management

serializer + codec engine
🤖

Your Voice Bot

Any WebSocket bot: STT + LLM + TTS pipeline

pcm16 / 16kHz

Why VoxBridge?

🔌

8 Providers Built-in

Twilio, Genesys, Avaya, Cisco, Amazon Connect, FreeSWITCH, Asterisk, and a generic WebSocket serializer.

🎵

Automatic Codec Conversion

mu-law, A-law, PCM16, and Opus. Hub-and-spoke through PCM16 means any-to-any conversion works automatically.

Zero Boilerplate

Config-driven mode: write a YAML, run one command. No code needed. Or use decorators for full control.

🚀

Async-First

Built on asyncio. Each call gets its own bidirectional task pair. Handles hundreds of concurrent calls.

🧹

Add Providers in 1 File

Implement BaseSerializer with 3 methods and 3 properties. Register it. Done. Your provider works with every bot.

📦

pip install & go

Pure Python core with zero native dependencies. Optional extras for Opus, SIP, and FastAPI server.

Supported Providers

Each provider has a dedicated serializer that handles its unique protocol

Twilio
mulaw / 8kHz
Genesys
mulaw / 8kHz
Avaya
mulaw / 8kHz
Cisco
mulaw / 8kHz
Amazon Connect
pcm16 / 8kHz
FreeSWITCH
mulaw / 8kHz
Asterisk
mulaw / 8kHz
Generic WS
pcm16 / 16kHz

Get Started in 60 Seconds

1

Install VoxBridge

pip install voxbridge
2

Generate a config

voxbridge init
3

Edit bridge.yaml

provider:
  type: genesys        # or twilio, avaya, cisco, etc.
  listen_port: 8765

bot:
  url: ws://your-bot:9000/ws
  codec: pcm16
  sample_rate: 16000
4

Run the bridge

voxbridge run --config bridge.yaml

That's it. Your telephony provider connects to VoxBridge, and audio flows to your bot.

Under the Hood

Clean, modular architecture designed for extensibility

core/events.py

9 Pydantic event types: AudioFrame, CallStarted, CallEnded, DTMF, Hold, Transfer, Custom, Error

audio/codecs.py

Pure-Python G.711 mu-law/A-law. Hub-and-spoke through PCM16. Optional Opus via opuslib.

serializers/

8 built-in serializers. Each is one file implementing BaseSerializer. Pure message translators — no I/O.

bridge.py

Central orchestrator. Bidirectional async loops. Decorator API. Wires serializers + codecs + transports.

transports/

WebSocket client + server transport. Optional SIP transport via PJSIP for SBC integration.

session.py

Per-call state management. Codec pipeline. Concurrent call tracking. Auto-cleanup on disconnect.

Deploy Anywhere

🐳

Docker

docker compose up
☁️

Fly.io

fly deploy
💻

Self-hosted

voxbridge run -c bridge.yaml

Stop writing custom
telephony integrations.

Build your voice bot once. Connect it everywhere.

Get Started on GitHub
pip install voxbridge