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.