
Asterisk
Open-source PBX and telephony toolkit for building communications applications; modular C-based engine with SIP, WebRTC, RTP, ARI/AMI APIs and hardware support.

Asterisk is an open-source telephony engine and PBX toolkit implemented primarily in C and developed for GNU/Linux. It exposes traditional PBX features and low-level telephony primitives so developers and operators can build SIP, WebRTC and PSTN-connected communications applications.
Key Features
- Modular, channel-based architecture with pluggable modules for SIP (chan_pjsip / chan_sip), media, codecs and hardware interfaces
- WebRTC support (WSS/DTLS-SRTP), RTP/RTCP handling, and modern codec support including Opus for browser and realtime audio
- ARI (Asterisk REST Interface) exposing REST + WebSocket events for building custom programmable call applications
- AMI and AGI interfaces for management, automation and traditional dialplan scripting; full CLI and menuselect build configuration
- PSTN and telephony hardware integration (traditional telephony cards and drivers) alongside VoIP gateway capability
- Source-driven build system using autoconf/Autotools and GNU Make; extensive documentation, community forum and release advisories
Use Cases
- Deploying an enterprise or branch PBX providing calls, voicemail, conferencing, queues and call routing
- Acting as a VoIP gateway or SBC to bridge SIP/WebRTC clients with PSTN trunks and telephony hardware
- Building programmable communications services (IVR, voicebots, conferencing, call recording) using ARI or AMI
Limitations and Considerations
- Nontrivial operational complexity: requires careful configuration, dependency management and familiarity with telephony concepts
- Requires proactive security and performance tuning (file-descriptor limits, TLS/DTLS configuration); security advisories are periodically published for critical fixes
- Feature surface is large and modularity means some functionality requires enabling/building specific modules or external libraries
Asterisk is a mature, widely adopted telephony engine suited for operators and developers who need deep control over call handling and media. It is maintained by a large community and is intended for production PBX and programmable-telephony deployments.



