Welcome to OPBX
OPBX is an open-source, multi-tenant business PBX platform built on top of the Cloudonix CPaaS. It provides a complete phone system for organizations of any size, combining a Laravel 12 backend, a React 19 frontend, a Go dialer worker for outbound campaigns, and Java/Vert.x 5 workers for stream-based voicemail detection (AMD) and call queue management (ACD).
Key Features
- Multi-tenant organizations with complete data isolation between tenants
- Role-based access control supporting Owner, PBX Admin, Supervisor, PBX User, and Reporter roles
- Extension management with automatic Cloudonix SIP subscriber synchronization
- DID phone number routing to extensions, ring groups, IVRs, business hours, conference rooms, AI assistants, and AI load balancers
- Ring groups with simultaneous, round-robin, and sequential distribution strategies
- IVR menus supporting audio files, remote URLs, and text-to-speech prompts
- Business hours with weekly schedules, holiday exceptions, and timezone support
- Conference rooms with optional PIN protection, host controls, and recording
- AI assistants with registry-based provider configuration (SIP and WebSocket protocols)
- AI load balancers for distributing calls across multiple AI providers with follow-through failover
- Auto Dialer for outbound campaigns with CAC/CPS rate limiting, scheduling, AMD, and retry logic
- Call recordings and CDR reporting for compliance and analysis
- Inbound blacklist and outbound whitelist for call security
- Real-time call monitoring with live call status and WebSocket updates
- Supervisor role for read-only, scoped monitoring of specific users and ring groups
- Live call coaching with spy (listen), whisper, and barge modes for Owners and Supervisors
- Centralized logging with an optional Loki + Grafana stack, including per-call audit trails searchable by Cloudonix session token
- In-browser Web Phone (JsSIP/WebRTC softphone) for placing, receiving, and coaching calls
- Call notifications with per-organization webhook configuration, event filtering, and retry logic
- Platform management tools for service providers hosting multiple organizations
Architecture Overview
The browser interacts with a React single-page application served through Nginx. API requests route to the Laravel backend, which manages data in MySQL, caches state in Redis, and stores files in SeaweedFS (S3-compatible). Real-time updates flow through Soketi. All VoIP functionality delegates to Cloudonix CPaaS via REST API and webhooks. The Go dialer worker executes outbound campaigns, and the Java AMD worker analyzes audio streams for voicemail detection.
Technology Stack
| Component | Technology | Purpose |
|---|---|---|
| Backend | Laravel 12 (PHP 8.4) | REST API and business logic |
| Frontend | React 19 + TypeScript | User interface |
| Database | MySQL 8.4 LTS | Persistent data storage |
| Cache/Queue | Redis 7 | Caching, sessions, job queues, locks |
| Storage | SeaweedFS | S3-compatible object storage for recordings |
| Real-time | Soketi WebSocket | Live updates and notifications |
| VoIP | Cloudonix CPaaS | Call handling and SIP services |
| Dialer | Go Worker | Outbound campaign execution |
| AMD | Java/Vert.x 5 Worker | Stream-based voicemail detection |
| ACD | Java/Vert.x 5 Worker | Call queue engine (waiting callers, agent states) |
| MCP | MCP server | Lets AI agents use the OPBX API |
Role Hierarchy
OPBX implements a hierarchical permission system. Each user belongs to exactly one organization and has one of the following roles:
| Role | Description | Key Capabilities |
|---|---|---|
| Owner | Organization creator | Full access to all features, can manage all users including other owners, configure system-wide settings |
| PBX Admin | System administrator | Manage extensions, routing rules, phone numbers, trunks and users (within the limits in Users) |
| Supervisor | Scoped monitor | Read-only view of assigned users/ring groups; coach live calls (spy/whisper/barge); use the Web Phone; no configuration or exports |
| PBX User | Regular user | View assigned resources, update own extension settings, view personal call history |
| Reporter | Read-only access | View call logs, generate reports, access dashboards without modification rights |
The Owner role cannot be assigned through the API or the Users page. Only an Owner can change another user's role. PBX Admins cannot give the PBX Admin role or change an Owner's or PBX Admin's role. See Users.
API Documentation
The OPBX REST API is documented with OpenAPI 3.1.0. You can explore the endpoints at the OPBX REST API reference.
Quick Start
Ready to get started? Follow these steps:
- Install OPBX using Docker Compose
- Complete your first login and organization setup
- Configure Cloudonix integration for telephony
- Learn the core concepts before configuring your PBX
- Learn the admin interface, then configure each module in the order given in the modules index
Operators who run the platform for several organizations also read Platform Management and Centralized Logs.
If you are unfamiliar with PBX terminology, start with the Core Concepts guide. It explains extensions, DIDs, ring groups, and other essential concepts you will need to configure your phone system.