Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/signalwire/freeswitch/llms.txt

Use this file to discover all available pages before exploring further.

FreeSWITCH is a Software Defined Telecom Stack that transforms commodity hardware into a full-featured telecommunications platform. Whether you’re building a PBX, a call center, an IVR system, or a WebRTC gateway, FreeSWITCH provides the modular foundation to make it happen — open source, battle-tested, and backed by the team at SignalWire.

Installation

Install FreeSWITCH from packages or build from source on Debian, CentOS, or Raspberry Pi.

Quickstart

Get a working SIP softswitch running in minutes with the default vanilla configuration.

Core Concepts

Understand FreeSWITCH’s modular architecture, session model, dialplan, and event system.

Configuration

Configure SIP profiles, dialplan contexts, user directories, and global variables via XML.

Modules

Explore the 100+ built-in modules: endpoints, applications, codecs, languages, and more.

Event Socket Layer

Control calls programmatically using ESL — the TCP-based external call control interface.

What Is FreeSWITCH?

FreeSWITCH is a high-performance softswitch that supports SIP, WebRTC, PSTN, and many other telephony protocols. Its modular design means you can load only the modules you need — from codecs and endpoint protocols to scripting engines and CDR backends. Combined with SignalWire, FreeSWITCH can interconnect with the global PSTN and scale to any size.
1

Install FreeSWITCH

Install from the SignalWire package repository on Debian/Ubuntu, or build from source. See Installation for full instructions.
2

Start with vanilla config

The default vanilla configuration provides a working PBX out of the box, with dialplan examples, SIP profiles, and sample users included.
3

Customize your dialplan

Edit conf/dialplan/default.xml to define how incoming and outgoing calls are routed. Use extensions, conditions, and actions to implement any call flow.
4

Connect external control

Use the Event Socket Layer (ESL) to control calls from external applications in Python, Lua, JavaScript, Java, Perl, Ruby, or any language that can open a TCP socket.

Key Features

SIP via mod_sofia

Industry-standard SIP stack powered by the Sofia-SIP library for registrations, calls, and presence.

WebRTC via mod_verto

Native WebRTC support using the Verto JSON-RPC protocol for browser-based voice and video.

XML Dialplan

Powerful regex-based dialplan engine with contexts, extensions, conditions, and actions defined in XML.

Event Socket Layer

A TCP-based API for external call control with bindings for 8+ programming languages.

100+ Modules

Conferencing, voicemail, IVR, CDR, transcoding, TTS/ASR, scripting languages, and more — all loadable at runtime.

SignalWire Integration

Connect directly to SignalWire’s cloud platform for PSTN access, SMS, and elastic scaling via mod_signalwire.
FreeSWITCH is actively developed and maintained by SignalWire, founded by the original authors of FreeSWITCH. For commercial support, contact coreteam@freeswitch.com.

Build docs developers (and LLMs) love