What Is Asterisk PBX?
The History of Asterisk
Mark Spencer created Asterisk in 1999 while running a Linux support company called Linux Support Services. He needed a phone system for his business but could not afford the commercial options available at the time, so he built one himself. The project was named Asterisk after the wildcard character (*) used in computing, symbolizing the system's ability to connect to anything.
Spencer founded Digium to develop and commercialize Asterisk, producing both the open source software and the telephony hardware cards needed to connect the software to traditional phone lines. Digium was acquired by Sangoma Technologies in 2018, and Sangoma has continued to develop Asterisk, FreePBX, and a range of IP phones and telephony products.
Over its more than 25 years of development, Asterisk has evolved from a simple PBX replacement into a comprehensive telephony framework used by millions of installations worldwide. It powers hotel phone systems, call centers, ISP infrastructure, hospital communications, government networks, and countless small business phone systems. Many commercial VoIP products and cloud PBX services use Asterisk as their underlying engine, even if they do not advertise it.
How Asterisk Works
At its core, Asterisk is a SIP back-to-back user agent (B2BUA). When a call arrives, Asterisk terminates the incoming SIP session, processes the call through its dial plan logic, and creates a new SIP session to the destination. This architecture gives Asterisk complete control over every aspect of the call, including routing, codec transcoding, recording, and manipulation of SIP headers.
The dial plan is the central logic engine. Defined in the extensions.conf configuration file (or extensions.ael for the Asterisk Extension Language), the dial plan contains pattern-matching rules that determine what happens when a number is dialed. A simple dial plan might ring a SIP phone when its extension is dialed, play a voicemail greeting when no one answers, and route external calls through a SIP trunk. A complex dial plan might query an external database for routing decisions, play custom prompts based on the time of day, and chain together multiple applications in sequence.
Asterisk uses loadable modules for virtually everything. Channel drivers (like chan_pjsip for SIP) handle protocol-specific communication. Codec modules (like codec_opus and codec_g729) handle audio encoding and decoding. Application modules (like app_voicemail, app_queue, and app_confbridge) provide specific telephony features. Resource modules handle connections to databases, calendars, and external services. This modular design allows administrators to load only the components they need, reducing memory usage and attack surface.
Key Features
Asterisk provides an extensive set of built-in telephony features. The voicemail system (app_voicemail) supports individual mailboxes with greetings, password protection, email notification with audio attachments, and message forwarding. The queue system (app_queue) distributes incoming calls across a pool of agents using strategies like round-robin, fewest calls, random, or linear (ring in order). The conference bridge (app_confbridge) supports multi-party audio conferences with PIN protection, admin and participant roles, and real-time management through the Asterisk CLI or AMI.
The interactive voice response (IVR) system is built from dial plan logic rather than a dedicated module. Administrators create IVR menus by combining the Background application (which plays a prompt while listening for digit input), the WaitExten application (which waits for the user to press a digit), and routing logic that directs the call based on the input. This approach is flexible enough to build arbitrarily complex IVR trees, though GUI interfaces like FreePBX make the process much simpler.
Call recording is handled by the MixMonitor application, which records both sides of a conversation into a single audio file. Recordings can be triggered automatically for all calls, for specific extensions or trunks, or on demand through a feature code (by default, *1 during an active call). The recordings are saved as WAV or MP3 files and can be stored locally, on a network share, or uploaded to cloud storage through custom scripts.
Asterisk also provides call parking (placing a call on hold in a parking lot that any extension can pick up), paging (broadcasting audio to a group of phones), intercom (one-way or two-way audio to specific phones), music on hold (playing audio files or streaming audio to callers on hold), call transfer (blind and attended), and call pickup (answering a ringing phone from another extension).
Asterisk Versions and Release Cycle
Asterisk follows a release cycle with two types of releases: standard releases and long-term support (LTS) releases. Standard releases receive new features and bug fixes for approximately one year, followed by a year of security-fix-only maintenance. LTS releases receive bug fixes for two years and security fixes for an additional two years, giving them a total supported life of four years.
As of 2026, Asterisk 22 is the current LTS release and is the recommended version for new production deployments that prioritize stability. Asterisk 23 is the current standard release and includes the latest features and improvements. Asterisk 21 has entered security-fix-only status. Older versions like Asterisk 18 and 20 have reached end of life and should be upgraded.
The transition from chan_sip (the original SIP channel driver) to chan_pjsip (the modern PJSIP-based driver) is now complete, and chan_sip has been removed from recent versions. All new deployments should use PJSIP, which provides better standards compliance, improved NAT handling, and support for features like WebRTC that chan_sip never supported well.
Integration Interfaces
Asterisk provides three primary interfaces for external applications to interact with the telephony engine. AGI (Asterisk Gateway Interface) allows external scripts to control the dial plan, playing prompts, collecting input, and making routing decisions from programs written in any language. AMI (Asterisk Manager Interface) is an event-driven interface that allows external applications to monitor and control Asterisk in real time, receiving events about call state changes and sending commands to originate calls, transfer calls, or modify configurations.
ARI (Asterisk REST Interface), introduced in Asterisk 12, provides a modern RESTful API and WebSocket event stream for building custom communications applications. ARI gives external programs direct control over channels, bridges, and media, essentially turning Asterisk into a programmable telephony engine that your application drives. ARI is the recommended interface for new custom development, as it provides a cleaner and more powerful programming model than AGI or AMI.
When to Use Asterisk Directly vs. Through a GUI
Most businesses should use Asterisk through a management interface like FreePBX rather than configuring it directly. FreePBX handles the routine tasks of creating extensions, setting up trunks, building IVR menus, and managing voicemail through a web interface, which is faster and less error-prone than editing configuration files by hand.
Working with Asterisk directly makes sense when you are building a custom telephony application (using AGI, AMI, or ARI), when you need call handling logic that no GUI supports, when you are developing a product that uses Asterisk as its engine, or when you want to deeply understand how the system works for educational purposes. Even in these cases, many developers start with FreePBX for the basic PBX functionality and then extend it with custom dial plan code or ARI applications for the parts that require custom logic.
Why Asterisk Matters
Asterisk democratized telephony in the same way that Linux democratized operating systems and Apache democratized web serving. Before Asterisk, a business phone system cost thousands of dollars in proprietary hardware and licensing, required specialized technicians to install, and locked you into a single vendor for maintenance and expansion. Asterisk proved that a commodity Linux server and open source software could provide the same functionality at a fraction of the cost, and in doing so it created an entire industry of open source telephony products, SIP trunk providers, and VoIP service companies.
Today, Asterisk runs in environments ranging from single-phone home offices to telecom carrier infrastructure handling millions of calls. Its codebase is mature, its community is global, and its ecosystem of compatible hardware, software, and services is unmatched in the open source telephony world. Whether you use it directly or through a GUI like FreePBX, Asterisk is the engine that makes open source VoIP possible.
Asterisk is the foundational open source telephony engine that powers most of the world's open source phone systems. It is free, feature-complete, and supported by a massive community. Most users should access its capabilities through FreePBX or another GUI rather than configuring it directly, but understanding what Asterisk does and how it works is valuable knowledge for anyone managing a VoIP deployment.