The AI-Native, Software-Defined PBX

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 GitHub

Product Screenshots

A glimpse into the RustPBX administrative console and features.

Call Logs

Comprehensive Call Logs

Extensions

Extension Management

Route Editor

Visual Route Editor

SIP Flow

SIP Message Flow Analysis

Call Transcription

Live Call Transcription

Web Dialer

Integrated Web Dialer

Settings

System Configuration

Metrics

Prometheus Metrics Dashboard

Programmable by Design

Call control is externalized — build your telephony logic in any language.

HTTP Router

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

RWI — Real-time WebSocket Interface

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.

Why Choose RustPBX?

Everything you need to run modern telephony — from SIP trunking to AI-powered calls.

Simple Web Management

Intuitive Web Console for all configurations. Manage extensions, trunks, and routes without touching complex config files.

Zero-Downtime Reload

Apply configuration changes instantly with one click. Supports seamless hot-reloading to keep your business running.

AI-Native Calls

AI agents join calls as native participants — listen, speak with barge-in, and transfer, all driven over WebSocket.

High Performance

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.

Full SIP Stack

Complete proxy server with registration, authentication, and routing. Supports UDP, TCP, WebSocket, and TLS with SRTP encryption.

Media Proxying

Advanced RTP relay & transcoding, NAT traversal, and built-in call recording capabilities.

Call Center & ACD

Built-in contact center: agent state machine, skill-based routing with 5 distribution strategies, queues with overflow policies, and supervisor listen/whisper/barge.

Transcription

Offline transcription with SenseVoice and live transcripts via SSE — search and analyze every conversation.

SipFlow Capture

Unified SIP + RTP capture with visual message flow analysis for fast troubleshooting.

Auto TLS (ACME)

Automatic certificate provisioning via ACME. Secure TLS/SIP and WSS out of the box.

Observability

Prometheus metrics, OpenTelemetry tracing, RBAC, and CDR webhooks for your billing and analytics pipelines.

WebRTC Ready

First-class support for browser-based telephony via WebSockets and integrated JSSIP/SIP.js support.

Flexible Storage

Compatible with SQLite, PostgreSQL, and MySQL. Export CDRs and recordings to various backends.

Modern API

Built on Axum and SeaORM with a clean RESTful management interface and easy-to-use admin console.

Quick Start with Docker

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).