Call Us Today! 877.742.2583

Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  • Extensibility - Allowing new features to be added easily.
  • Flexibility - Users should be able to pick and choose which functionalities are enabled, while also allowing them to replace parts of the system with different implementations
  • Scalability - FreeSWITCH can be run on systems as small as an embedded softphone or as big as a cluster of full-blown carrier switches.
  • Stability - Problems with one feature should not bring down the whole system.

To accomplish these goals FreeSWITCH is built using a modular system:

  • There is a small core that provides the base system used by all modules, however most of the functionalities are not implemented in the core itself,
  • but rather in standalone modules that are not dependent on each other. 

When you install FreeSWITCH with the default configuration, the modules that are required for most common scenarios are enabled. We will see later in the configuration section how to enable/disable modules.

The modules are grouped by the type of functionality they provide. We will now explore the types of modules, and what functionality is provided by each.

3.1 Module Types


Endpoint modules support types of communications devices such as VoIP, PSTN (i.e., regular landline), Skype, Google Talk etc.

Endpoint modules are one of the most important modules in FreeSWITCH.

ApplicationThis is where all the action is happening! There are hundreds of application modules included in the default setup a few examples are playing a file, joining a conference, send a call to voicemail, play an IVR menu. Many of the common applications are provided by the dptools module.
DialplanA Dialplan module is responsible for routing calls, based on information such as Caller ID, Destination Number and more. The default dialplan module is the XML Dialplan. We will cover this in detail in the Dialplan section.
DirectoryProvides authentication and configurations for users that can register with FreeSWITCH. The most common directory module is the XML Directory.


Codecs are used to encode and compress audio for streaming.
File Formats

Most of the common audio formats are supported by the mod_dptools:playback. See the list of supported formats there.

 From 3. Supported file types section in mod_dptools:playback: "FreeSWITCH has an abstraction layer for file formats." (See TODO there also.)

LoggersRecord log messages. Some of the included loggers are console and log file. xml_cdr is another commonly used logger to output call detail records.
LanguagesSupport scripting languages which can be run as part of the dialplan. The most popular language is Lua. Javascript and a few others are also supported.

There a few more types of modules, but these are the common ones. For a listing of common module see the Modules page. If you require some functionality that's not provided by one of the existing modules, you can write your own module. Modules can be written in many popular programming languages. See the developer documentation for more information.


Many modules also have API commands that can be issued from the command line, script or sent from a remote computer via the event socket. What the API commands can do are up to each individual module, but some common functionalities include returning status information (such as how many listeners are in a conference) or control the currently running application (such as pausing a file being played) There are hundreds of APIs available from the different modules. In the command line you can type show api to see all APIs based on the modules that are loaded.

There are also API commands provided by the core, these are in the Commands module.

Navigating the documentation

This table provides a roadmap you can use to go through the documentation in a structured fashion.

InstallationHow to download and install FreeSWITCH
ConfigurationOverview of the structure of FreeSWITCH Configuration files.
Running FreeSWITCHHow to run FreeSWITCH in the console or as a daemon
Call LegsExplains an important concept required to better understand Endpoints and Dialplans
Endpoints Explains the endpoint concept in general, as well as a more detailed overview of the common endpoints
Introduction to DialplanDialplan is one of the most complex parts of FreeSWITCH, this page distills it
DirectoryHow to setup users and devices
Logging & CDRSetup Logging and Call Records
DatabasesHow to configure FreeSWITCH to store channel state in a database
Default ConfigurationWalkthrough of the default configuration
Session ScriptsHow to create custom functionality by writing scripts that run in the dialplan, mod_lua, mod_python, mod_perl, mod_v8 (for Google V8 JavaScript), mod_java
Event SocketAllows an outside program to interact with FreeSWITCH over a network connection. The CLI uses the Event Socket to allow you to run commands and view the output of FreeSWITCH.



FreeSWITCH itself is licensed under the MPL 1.1 (Mozilla Public License), however some individual modules might be using other licenses.

Additional Resources

  • Join the weekly conference to keep up-to-date with the latest developments in the FreeSWITCH world.
  • The annual ClueCon takes place in Chicago, Register today!
  • FAQ
  • Buy our books