Asterisk is an open-source private branch exchange (PBX) and telephony toolkit. It sits as middleware between Internet and telephony channels below and communications applications above: it terminates SIP, IAX2, and H.323 calls, interfaces with traditional public switched telephone network (PSTN) lines, and lets you build voice applications such as call routing, voicemail, and interactive voice response (IVR) on top.
For agent builders, Asterisk is the telephony layer a voice agent connects to. Its WebSocket channel carries call audio as frames, and a serializer on the pipeline side converts those frames so a speech or LLM pipeline can listen and speak on a live call.
Asterisk is developed and tested primarily on GNU/Linux and also runs on macOS and the BSD variants. It is built from C source with ./configure, make menuselect for choosing modules, and make; a sample PBX configuration with demonstration extensions can be generated for first-time setups. At runtime it exposes a command-line console (*CLI>) with built-in help for every command.
Configuration files share one format: ; comments, [section] headers, and variable = value statements. Because the system tracks SIP registrations against wall-clock time, it expects a time-synchronisation daemon (ntpd, chronyd, or systemd-timesyncd), and because every call and hardware channel consumes file descriptors, the per-process descriptor limit bounds concurrent calls (a 1024 limit handles roughly 150 simultaneous SIP calls).
Features
- SIP and VoIP: terminates SIP, IAX2, and H.323 calls as the primary transport for most deployments
- PSTN and TDM interfaces: supports Sangoma analog and digital interface cards, PortAudio-compatible sound cards, and the Xorcom Astribank channel bank
- WebSocket media channel: streams call audio as frames that an external agent pipeline can consume and produce
- Modular build: make menuselect selects which channel, application, and codec modules to compile and reports their dependencies
- Sample PBX: make samples installs a demonstration configuration with example extensions
- CLI console: asterisk -vvvc starts a verbose foreground console with core show help for command reference
- Uniform configuration: sectioned variable = value files with ; comments across every subsystem
- Cross-platform: primary support on every major GNU/Linux distribution, with ports to macOS and the BSDs
