xPhone
A phone line for your code — SIP and RTP implemented from scratch. Native libraries for Go and Rust hand you call audio as PCM frames; xbridge brings the same phone line to every other language; and test tooling lets you build without a live trunk. Battle-tested across 500,000+ production calls.
Repositories
Five repositories, one stack. Start from the language you are writing in; the rest are there when you need them.
| Repository | Language | What it is for | State |
|---|---|---|---|
| xphone-go | Go | The library. SIP + RTP in-tree, PCM frames on a channel. | Production |
| xphone-rust | Rust | The same phone line for Rust — zero telephony crate dependencies. | Production |
| xbridge | Rust | Phone calls for every other language: SIP in, WebSocket audio + REST out. Twilio-compatible framing. | Production |
| fakepbx | Go | In-process SIP server for tests. Real SIP over loopback, no Docker. | Testing |
| xpbx | Go | A real PBX in one docker run — Asterisk plus a web UI. The five-minute test bench. | Test bench |
Pick by language first · xbridge if your language isn't listed · fakepbx and xpbx are for testing what you build
Under load
| Stage | Value | Note |
|---|---|---|
| Concurrent calls tested | 50 | single instance, residential trunk |
| Production calls to date | 500,000+ | across deployments |
| Frame cadence | 20 ms | PCM frames on a Go channel |
| Telephony dependencies | 0 | SIP and RTP implemented in-tree |
Figures published with the phone-line note · measured, not modelled
What it is
xPhone is an embedded telephony data plane: dial out, answer calls on any SIP trunk, or accept them as a SIP server — call audio arrives as PCM frames, ready for STT or a voice agent.
The core is a library, not a server: xphone-go and xphone-rust drop into your process — no Asterisk, no container, nothing to supervise. Not writing Go or Rust? xbridge speaks SIP on one side and WebSocket audio + REST on the other, so any language can place and take calls with Twilio-compatible framing. And fakepbx and xpbx give you a real SIP server for tests without a live trunk.
Pair it with cadence for the engine layer.