A high-performance, software-defined PBX built in Rust — the AI-native communication platform for next-gen contact centers.
RustPBX externalizes all call control via HTTP/WebSocket/Webhook. Route decisions, media control, and event streams are fully programmable in any language.
Voice Agent functionality has moved to Active Call. This repo focuses on SIP Proxy & PBX.
Commerce image (includes Wholesale + all plugins): docker pull docker.cnb.cool/miuda.ai/rustpbx:latest
Why RustPBX?
Software-Defined
AI-Native
High Performance
Every INVITE calls your HTTP webhook. Return JSON routing decisions. No recompilation needed.
AI agents are native participants — listen, speak, barge, transfer via WebSocket.
5000 concurrent calls with RTP proxy: ~3.8 cores, 0% loss. Linear scaling — 16 cores → ~16000+.
Core Capabilities
SIP & Media — Full SIP stack (UDP/TCP/WS/TLS/WebRTC), RTP relay, NAT traversal, TLS/SRTP with auto ACME certs. Fast registration via JWT or HTTP token (skip 401/407).
RustPBX
A high-performance, software-defined PBX built in Rust — the AI-native communication platform for next-gen contact centers.
RustPBX externalizes all call control via HTTP/WebSocket/Webhook. Route decisions, media control, and event streams are fully programmable in any language.
GitHub | Website
Quick Start
Run RustPBX with minimal config in 2 commands:
Minimal
config.toml:http://localhost:8080/console/udp://localhost:50601001/passwordWhy RustPBX?
Core Capabilities
SIP & Media — Full SIP stack (UDP/TCP/WS/TLS/WebRTC), RTP relay, NAT traversal, TLS/SRTP with auto ACME certs. Fast registration via JWT or HTTP token (skip 401/407).
Routing & Control — HTTP Router (dynamic routing decisions), RWI WebSocket Interface (real-time call control), Queue/ACD (sequential or parallel agent ringing).
Recording & Analytics — SipFlow unified SIP+RTP capture, post-call transcript via local SenseVoice (offline), CDR webhooks.
Operations — Built-in Web Console, WebRTC Phone, RBAC, Prometheus metrics + OpenTelemetry.
Programmable Interfaces
RustPBX exposes all call logic through standard protocols — no C modules, no recompilation.
HTTP Router
Every incoming INVITE calls your webhook. Return JSON to decide routing.
Actions:
forward·reject·abort·spamRWI (Real-time WebSocket Interface)
JSON-over-WebSocket for in-call control:
originate,answer,hangup,bridge,transfer,holdplay,stop,stream_start,inject_start(PCM)record.start,pause,resume,stopenqueue,dequeue,assign_agent,requeuelisten,whisper,barge,takeovercreate,add,remove,mute,destroySee API Integration Guide and RWI Protocol.
Editions
Benchmark
Tested on 2026-07-09 · RustPBX 0.4.10 · rustrtc 0.3.89 · Linux x86_64 · AMD Ryzen 7 5700X (8C/16T) / 32 GB · G.711 PCMU · CPS=100
Per-channel overhead:
0.008% CPU (signaling) / ~0.076% CPU (RTP proxy). Scaling is linear — 5000 concurrent uses ~3.8 cores, leaving ~12 cores for additional load (16000+ theoretical).Use Cases
Architecture
App Service (AI Agents, HTTP DialPlan, CRM) → RustPBX Core (B2BUA, IVR, Media, Queue, CDR) → Access (PSTN, WebRTC, SIP, Mobile)
Build from Source
Submodules
Commerce addons are managed as git submodules under
src/addons/:src/addons/ccsrc/addons/wholesalesrc/addons/endpoint_managersrc/addons/enterprise_authsrc/addons/ivr_editorsrc/addons/sbcsrc/addons/telemetrysrc/addons/voicemailScreenshots
Documentation
| Guide | Description | |—|—|—| | Configuration Guide | All config options | | Authentication | User backends, JWT & HTTP token fast registration | | API Integration Guide | HTTP Router, Webhooks, Call Control, Recording | | RWI Protocol | WebSocket Interface | | RWI Events Reference | Event types, fields, JSON examples (中文) | | RWI Events Reference (EN) | Event types, fields, JSON examples (English) |
Troubleshooting
SIP 401 behind NAT/Docker — set the realm explicitly:
License
Community: MIT · Commercial: hi@miuda.ai
https://miuda.ai — Maintenance & commercial support