RustPBX vs Traditional Voice Stacks
Asterisk, FreeSWITCH and Kamailio are proven systems with decades of deployments. RustPBX targets a different operating point: a single memory-safe core with a modern control plane, built for clusters and automation. Here is an honest comparison — including where the incumbents still win.
| Dimension | RustPBX | Asterisk | FreeSWITCH | Kamailio |
|---|---|---|---|---|
| Language / safety | Rust (memory-safe) | C | C | C |
| Signaling + media in one runtime | Yes (one async runtime) | Yes (thread-per-call legacy) | Yes (event-driven) | Signaling only (media via RTPEngine) |
| Cluster session registry (owner routing) | Built in | Requires external design | Requires external design | Stateless-focused |
| REST + WebSocket control plane | Native (RWI + REST) | AMI/ARI | ESL | RPC/JSON-RPC |
| Contact center / ACD | Commercial addon, integrated | Via third-party (ViciDial…) | Via FusionPBX etc. | Not its role |
| Wholesale billing / BSS | Commercial addon | External | External | External |
| Ecosystem / modules | Growing (Rust + addons) | Vast | Large | Large (SIP-router) |
| Dialplan familiarity | Config + TOML + API | Extensive | Extensive | Config language |
| License | MIT core (+ commercial addons) | GPL / commercial | MPL | GPL |
Where RustPBX fits best
New builds that need clustering, a modern API, integrated billing or contact center, and a memory-safe core — without assembling four projects.
Where incumbents win
Decades-old dialplan knowledge, huge module ecosystems, and exotic feature corners. If you depend on a specific native module, check before migrating.
Migration path
Run RustPBX alongside the incumbent behind a dispatcher: start with outbound (translation + routing + billing), then move inbound DIDs, then queues and CC. See the migration notes in the docs.