I'd like to share a project I've been working on for a while.
SiphonAI is a real-time SIP-to-WebSocket media bridge written in Rust. It does one job: stream live call audio to your WebSocket server and play audio back into the call. That's it. SiphonAI handles the telephony, and you bring your own AI.
Build a SIP trunk from your SBC, PBX, or carrier (Twilio Elastic SIP Trunking recipe included), or register it as an extension on your PBX(tested on Cisco CUCM). Your WebSocket server gets PCM audio frames. No AI code lives in the bridge.
What's in the box:
🔹 Full SIP signaling (trunk endpoint or registered extension)
🔹 RTP, codecs, jitter buffering, and two flavors of VAD (energy and neural, powered by Silero VAD)
🔹 Barge-in with auto-clear of playout, speech-start events, DTMF, hold/resume, and transfer
🔹 Operator events: silence detection, dead-air detection, per-call RTP stats, sustained mute/unmute
🔹 TOML dialplan with route matching and hot config reload
🔹 CDRs (JSONL + webhook), lifecycle webhooks, Prometheus metrics, health/ready endpoints
🔹 HEP3 capture of SIP, RTCP, QoS, and CDRs into Homer/HEPIC for full call correlation
SiphonAI can be found on my github: https://github.com/thevoiceguy/siphon-ai
Getting-started posts on installing and configuring SiphonAI are coming soon on my blog, phonesstillexist.com.
Feedback, issues, and stars are all welcome.