RustPBX
A high-performance Software-Defined PBX built in Rust. Designed as a programmable foundation for AI-powered call centers — route, record, transcribe, and webhook everything.
Different from Asterisk/FreeSWITCH (C modules), RustPBX exposes all call control via HTTP/Webhook, so any language can drive call logic.
Note: The Voice Agent functionality has been moved to a separate repository: Active Call. This repository now focuses on the SIP Proxy and PBX features.
Editions
| Community | Commerce | |
|---|---|---|
| License | MIT | Commercial |
| SIP Proxy + Media | ✅ | ✅ |
| Queue / ACD | ✅ | ✅ |
| HTTP Router (dynamic routing) | ✅ | ✅ |
| Call Recording + SipFlow | ✅ | ✅ |
| Transcript (SenseVoice offline) | ✅ | ✅ |
| Web Console | ✅ | ✅ |
| Voip Wholesale (VOS3000 alternative) | ❌ | ✅ |
| Voicemail Pro | ❌ | ✅ |
| Enterprise Auth (LDAP/SAML/MFA) | ❌ | ✅ |
| Endpoint Manager (phone auto-provisioning) | ❌ | ✅ |
Core Capabilities
- SIP Proxy — Full SIP stack (UDP/TCP/WebSocket), registration, auth, B2BUA
- HTTP Router — Every INVITE hits your webhook; you return routing decision in JSON
- Queue / ACD — Sequential or parallel agent ringing, hold music, fallback actions
- Media Proxy — RTP relay, NAT traversal, WebRTC ↔ SIP bridging
- SipFlow Recording — Unified SIP+RTP capture; date-organized, query-on-demand (no file-handle exhaustion)
- Transcript — Post-call transcription via local SenseVoice (offline, no cloud dependency)
- CDR Webhooks — Push call detail records + recordings to your system on hangup
- WebRTC Phone — Built-in browser softphone for testing
Quick Start (Docker)
# Commerce image (includes Wholesale + all commercial plugins)
# Community image
Minimal config.toml:
= "0.0.0.0:8080"
= "sqlite://rustpbx.sqlite3"
[]
= "/console"
= false
[]
= "0.0.0.0"
= 5060
= ["auth", "registrar", "call"]
[[]]
= "memory"
= [{ = "1001", = "password" }]
[]
= "local"
= "./config/cdr"
= "hourly"
# Create first admin
Web console: http://localhost:8080/console/
SIP proxy: udp://localhost:5060
Build from Source
Dependencies (Linux):
macOS:
Cross-compilation for aarch64 / x86_64 via cross:
HTTP Router — The Key Extension Point
RustPBX calls your API on every incoming INVITE. You decide what happens:
[]
= "https://your-api.com/route"
= 3000
// POST to your endpoint:
// Your response:
Actions: forward · reject · abort · spam
See API Integration Guide for the full webhook and active call control reference.
Screenshots
| Extensions | Call Records | Route Editor |
|---|---|---|
![]() |
![]() |
![]() |
| Transcript | SIP Flow | WebRTC Phone |
|---|---|---|
![]() |
![]() |
![]() |
Documentation
| Configuration Guide | All config options |
| API Integration Guide | HTTP Router, Webhooks, Active Call Control |
| Product Roadmap | Commercial plugins & Q2 2026 plan |
Troubleshooting
SIP 401 behind NAT/Docker — set the realm explicitly:
[]
= ["your-public-ip:5060"]
License
Community edition: MIT
Commercial edition : hi@miuda.ai





