| Crates.io | rustpbx |
| lib.rs | rustpbx |
| version | 0.3.13 |
| created_at | 2025-04-25 02:22:18.582208+00 |
| updated_at | 2025-08-25 08:14:21.190673+00 |
| description | A SIP PBX implementation in Rust |
| homepage | |
| repository | https://github.com/restsend/rustpbx |
| max_upload_size | |
| id | 1648433 |
| size | 8,251,863 |
RustPBX is a high-performance, secure software-defined PBX (Private Branch Exchange) system implemented in Rust, designed to support AI-powered communication pipelines and modern voice applications.
Linux:
apt-get install -y libasound2-dev libopus-dev
Mac:
brew install opus
git clone https://github.com/restsend/rustpbx
cd rustpbx
cargo build --release
cp config.toml.example config.toml
# Edit config.toml with your settings
cargo run --bin rustpbx -- --conf config.toml
Access the web interface at http://localhost:8080 to test voice agent features and manage calls.
docker pull ghcr.io/restsend/rustpbx:latest
# Create .env file
cat > .env << EOF
# Tencent Cloud ASR/TTS Configuration
TENCENT_APPID=your_tencent_app_id
TENCENT_SECRET_ID=your_tencent_secret_id
TENCENT_SECRET_KEY=your_tencent_secret_key
EOF
# Create config.toml
cat > config.toml << EOF
http_addr = "0.0.0.0:8080"
log_level = "info"
stun_server = "stun.l.google.com:19302"
recorder_path = "/tmp/recorders"
media_cache_path = "/tmp/mediacache"
[ua]
addr="0.0.0.0"
udp_port=13050
[proxy]
modules = ["acl", "auth", "registrar", "call"]
addr = "0.0.0.0"
udp_port = 15060
registrar_expires = 60
ws_handler= "/ws"
# ACL rules
acl_rules = [
"allow 10.0.0.0/8",
"allow all",
]
[proxy.media_proxy]
mode = "auto"
rtp_start_port = 20000
rtp_end_port = 30000
[proxy.user_backend]
type = "memory"
users = [
{ username = "bob", password = "123456", realm = "127.0.0.1" },
{ username = "alice", password = "123456", realm = "127.0.0.1" },
]
[callrecord]
type = "local"
root = "/tmp/cdr"
EOF
docker run -d \
--name rustpbx \
-p 8080:8080 \
-p 15060:15060/udp \
-p 13050:13050/udp \
-p 20000-30000:20000-30000/udp \
--env-file .env \
-v $(pwd)/config.toml:/app/config.toml \
-v $(pwd)/recordings:/tmp/recorders \
docker.io/library/rustpbx:latest \
--conf /app/config.toml
The following environment variables are required for Tencent Cloud ASR/TTS services:
| Variable | Description | Required |
|---|---|---|
TENCENT_APPID |
Your Tencent Cloud App ID | Yes |
TENCENT_SECRET_ID |
Your Tencent Cloud Secret ID | Yes |
TENCENT_SECRET_KEY |
Your Tencent Cloud Secret Key | Yes |
Key configuration options in config.toml:
http_addr - Web interface and API endpointproxy.udp_port - SIP proxy server portua.udp_port - Outbound call user agent portproxy.media_proxy - RTP port range for media proxyingcallrecord.root - Directory for call recordingsSee https://github.com/restsend/rustpbxgo

The SIP workflow demonstrates how external applications can initiate calls through RustPBX, leveraging the full SIP protocol stack for reliable voice communications.

The WebRTC workflow shows how web applications can establish direct peer-to-peer connections via RustPBX, enabling modern browser-based voice applications.
For detailed API documentation, see API Documentation.
API Reference - Complete REST API documentation
Architecture Diagrams - System architecture and workflows
This project is currently in active development. We welcome contributions and feedback from the community.
MIT License - see LICENSE file for details.
Work in Progress - Core functionality is implemented and being actively refined. The system is suitable for development and testing environments.