A high-performance SIP PBX built in Rust. All call control is externalized via HTTP/WebSocket/Webhook — routing, media control, and events are programmable in any language. No C modules, no recompilation.
Get Started on GitHubA glimpse into the RustPBX administrative console and features.
Comprehensive Call Logs
Extension Management
Visual Route Editor
SIP Message Flow Analysis
Live Call Transcription
Integrated Web Dialer
System Configuration
Prometheus Metrics Dashboard
Call control is externalized — build your telephony logic in any language.
Every incoming INVITE calls your webhook. Return JSON to decide routing:
// RustPBX POSTs to your webhook
{ "call_id": "abc-123",
"from": "sip:+861390000@trunk",
"to": "sip:400800" }
// Your response decides what happens
{ "action": "forward",
"targets": ["sip:1001@internal"],
"record": true }
Actions: forward · reject · abort · spam
JSON-over-WebSocket for live call control:
// In-call commands
originate · answer · hangup · bridge
transfer · play · record.start
// Contact center & supervision
queue / ACD commands
supervisor: listen · whisper · barge
conference commands · and more
Read the RWI protocol docs.
Everything you need to run modern telephony — from SIP trunking to AI-powered calls.
Intuitive Web Console for all configurations. Manage extensions, trunks, and routes without touching complex config files.
Apply configuration changes instantly with one click. Supports seamless hot-reloading to keep your business running.
AI agents join calls as native participants — listen, speak with barge-in, and transfer, all driven over WebSocket.
Rust's concurrency and memory safety for a rock-solid SIP core: 5,000 concurrent calls with RTP relay on ~3.8 cores, with linear scaling.
Complete proxy server with registration, authentication, and routing. Supports UDP, TCP, WebSocket, and TLS with SRTP encryption.
Advanced RTP relay & transcoding, NAT traversal, and built-in call recording capabilities.
Built-in contact center: agent state machine, skill-based routing with 5 distribution strategies, queues with overflow policies, and supervisor listen/whisper/barge.
Offline transcription with SenseVoice and live transcripts via SSE — search and analyze every conversation.
Unified SIP + RTP capture with visual message flow analysis for fast troubleshooting.
Automatic certificate provisioning via ACME. Secure TLS/SIP and WSS out of the box.
Prometheus metrics, OpenTelemetry tracing, RBAC, and CDR webhooks for your billing and analytics pipelines.
First-class support for browser-based telephony via WebSockets and integrated JSSIP/SIP.js support.
Compatible with SQLite, PostgreSQL, and MySQL. Export CDRs and recordings to various backends.
Built on Axum and SeaORM with a clean RESTful management interface and easy-to-use admin console.
Get up and running in minutes.
# 1. Download the example config
curl -O https://raw.githubusercontent.com/restsend/rustpbx/main/config.toml.example
# 2. Start RustPBX with the config mounted
docker run -d --name rustpbx --net host \
-v $(pwd)/config.toml.example:/app/config.toml \
ghcr.io/restsend/rustpbx:latest --conf /app/config.toml
# 3. Create the admin account (first time only)
docker exec rustpbx /app/rustpbx --conf /app/config.toml \
--super-username admin --super-password changeme
Then visit http://localhost:8080/console/ and sign in. Default test
extensions: bob / alice (password 123456).