Open-source project
signalwire/freeswitch avatar
signalwire/freeswitch

FreeSWITCH hands you four install routes and keeps its documentation elsewhere

FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.

5,305 stars1,912 forksCNOASSERTION

At a glance

What is it?
The repository is a C codebase with three build systems, four `cluecon` template files, and eight separate sound packages, and its README is a set of links rather than a procedure. Everything you need to know after installation lives on a Confluence wiki and a vendor developer site, not in the tree.
Who is it for?
Adopt FreeSWITCH if you are replacing a proprietary switch with a software stack and you have someone who can hold autotools, MSBuild, and RPM packaging in their head at once, because that is what the repository asks of a contributor. Step back if you wanted a self contained install guide, since the README routes every step to a wiki page or a vendor site and ships no install command you can paste.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • signalwire/freeswitch5,305 ★ · +127
Star history
Repository2026-09-232026-11-13
signalwire/freeswitch5.2k5.3k

127 Stars in the last 51 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

There is no install command anywhere, only four routes

Read the README's Getting Started section twice and you notice what is missing: no command, no package name, no configuration file. It says FreeSWITCH is available as source code on GitHub, that you can check out the development branch and build for Linux, Windows, MacOSX, and BSD, and that detailed instructions live at developer.signalwire.com under FreeSWITCH Explained.

What it does give is a routing table. For installing from packages, the FSGET script is marked Recommended, with tutorials for Debian, Raspberry Pi, and CentOS 7. For building from source, there are example Dockerfiles under `docker/examples` in the repository, plus Debian build-from-source tutorials marked Recommended, Raspberry Pi, and CentOS 7. Building Debian packages has its own script, FSDEB, documented at `/scripts/packaging/build` in the repository.

Then the downloads, which are the only concrete artifacts named:

text
https://files.freeswitch.org/releases/freeswitch/
http://files.freeswitch.org/windows/installer/x64/
https://github.com/freeswitch/freeswitch-sounds/releases

Note what is missing from that list: no package version. Pinning a FreeSWITCH release means choosing a tarball directory, not writing a version string.

Four cluecon templates pick your configuration format

The root of the repository carries four `.tmpl` files whose names begin with `cluecon`:

text
cluecon.tmpl
cluecon2.tmpl
cluecon_small.tmpl
cluecon2_small.tmpl

Nothing in the README explains what these files contain or how the `2` and `small` variants differ, so their role is settled by reading the files.

The root also has `conf/`, `dtd/`, `htdocs/`, `web/`, and `fonts/` directories.

Three build systems share one tree, and one of them says 2017

The build story is the widest gap between what the README promises and what the repository contains. The promise is Linux, Windows, MacOSX, and BSD. The tree delivers that through three separate toolchains:

text
configure.ac
Makefile.am
acinclude.m4
bootstrap.sh
devel-bootstrap.sh
ci.sh
cc.sh

Autotools is the main path, with `configure.ac`, `Makefile.am`, `acinclude.m4`, `bootstrap.sh` for a fresh checkout, and `devel-bootstrap.sh` for setting up a development machine. Windows has its own: `Freeswitch.2017.sln`, a `.sln.bat` wrapper, `msbuild.cmd`, and a `w32/` directory. A `cmake_modules/` directory sits alongside for CMake based builds. Packaging has a third axis, with `debian/` and `yum/` directories and a `freeswitch.spec` for RPM builds.

Read the solution file name as information, not trivia. A Visual Studio solution named 2017 tells you what a Windows contributor is expected to have, and it is the kind of detail that quietly ends platform support for newer toolchains. Two more root files matter for contributors: `.clang-format` defines the C style, and `swig_common.i` is the SWIG interface that language bindings are generated from.

Voice prompts ship as eight separate sound packages

FreeSWITCH treats voice prompts as separate downloadable artifacts. The repository root holds one spec for the project itself and eight for sound packs, named by locale and voice:

`freeswitch-sounds-en-us-callie`, `freeswitch-sounds-en-us-allison`, `freeswitch-sounds-en-ca-june`, `freeswitch-sounds-fr-ca-june`, `freeswitch-sounds-pt-BR-karina`, `freeswitch-sounds-ru-RU-elena`, `freeswitch-sounds-sv-se-jakob`, and `freeswitch-sounds-music`.

Windows is handled differently again, with a Windows Installer for x64 in the downloads list and Windows Sound Packages hosted in a separate repository, `freeswitch/freeswitch-sounds`, rather than in this tree.

The practical consequence for an installer is that the base package and the audio are two decisions, and the second one is easy to leave for later. The RPM spec files sitting in the repository root are the reason this is visible from a clone at all: they show that the sound packs are packaged, versioned, and separable from the switch itself.

The sponsor's cloud module ships inside the code base

FreeSWITCH is sponsored by SignalWire, which the README says was founded by the original developers of the project and is the primary sponsor. That relationship is not only financial. The README names the services SignalWire provides, SMS, SIP, serverless application hosting, and programmable telecom, and then points at a specific module: `mod_signalwire` is distributed in this code base and allows you to pair with SignalWire and extend your FreeSWITCH.

Read that as an architectural fact rather than a sponsorship note. The integration path to the vendor's cloud is distributed in the same code base, so evaluating a FreeSWITCH deployment means deciding whether that module stays enabled, and the README gives you no configuration guidance for turning it off.

Commercial support is handled separately and separately paid for. The Additional Help section says that if you need assistance, or have an interest in using a commercially supported build, you can contact [email protected] to learn about professional services. That address is the only support route the README names, and there is no statement about response times, coverage, or what a supported build changes.

Release notes and manuals live on a wiki, and the mailing list is archived

Nothing in the repository tells you what changed in a release. The README points to a Confluence space at freeswitch.org/confluence/ as the main documentation index, and to a separate Release Notes page inside it. Everything else follows the same pattern: the install tutorials for Debian, Raspberry Pi, and CentOS 7 are wiki pages, the API and explanation pages are on developer.signalwire.com, and the FSGET and FSDEB scripts are documented as pages under `/scripts/packaging` rather than as a man page you can read offline.

That has a cost when something breaks at 2am. You are reading a wiki page to find out which behavior a build introduced, and wiki pages change without a commit, so the text you followed in March may not describe the same steps in October. A git checkout of the wiki is not something the README offers.

Community channels show the same migration. Slack is described as the chat system where the developers, the team, and the most active users are present, hosted at signalwire.community, and the old mailing list is explicitly labeled ARCHIVED at lists.freeswitch.org. Contributions go through GitHub pull requests, which the README calls the recommended way, with an issue tracker alongside. Security reports have their own file, `SECURITY.md`, at the root.

The 1.11 line is moving, and the release page is the only changelog

Maintenance signals are straightforward. The three releases listed are v1.11.1 on 2026-05-26, v1.11.2 on 2026-08-09, and v1.11.3 on 2026-08-28, all titled as FreeSWITCH releases, and the last push to the default `master` branch was on 2026-10-28. That is an active cadence on a project whose primary language is C, and a patch level series that has stayed inside 1.11.

What the numbers do not give you is the content. There is no CHANGELOG file at the root, so the diff between 1.11.2 and 1.11.3 is only on the wiki page the README links. For a stack that other people's calls depend on, that is an uncomfortable gap: you can see that a version exists, and you have to trust a web page to learn what it changed.

Licensing is similarly thin here. A `LICENSE` file sits at the root, and the README says nothing about what it grants or requires, so an organization that needs to know the terms has to read that file rather than this document. The rest of the root is infrastructure: `src/` and `libs/` for the code, `tests/` for the suite, `docs/`, `fscomm/`, `support-d/`, and `scripts/` for the packaging tooling the install routes depend on.

Editorial conclusion

Adopt FreeSWITCH if you are replacing a proprietary switch with a software stack and you have someone who can hold autotools, MSBuild, and RPM packaging in their head at once, because that is what the repository asks of a contributor. Step back if you wanted a self contained install guide, since the README routes every step to a wiki page or a vendor site and ships no install command you can paste. Before you plan the rollout, check two things: which of the eight sound packages your call flows need, and whether `mod_signalwire` staying in the code base is acceptable for your deployment.

Frequently asked questions

What is FreeSWITCH used for?

The README describes it as a Software Defined Telecom Stack, a software implementation that replaces proprietary telecom switches and runs on commodity hardware from a Raspberry PI to a multi-core server. Its own headings group the work under voice-over-IP services, SIP, SMS, and app integrations.

Is FreeSWITCH a PBX?

The README calls it a Software Defined Telecom Stack rather than a PBX, and the term does not appear in that document. It frames the project as telecom software that runs on commodity hardware, so treat its own description as the accurate summary.

Is FreeSWITCH free?

The README does not state a price or quote license terms. It says the source code is available on GitHub, and it directs anyone interested in a commercially supported build and professional services to [email protected]. A LICENSE file sits at the repository root.

How do I install FreeSWITCH on Debian?

The README points to a Debian tutorial on the freeswitch.org wiki for installing from packages and to a Debian build-from-source tutorial marked Recommended, and it documents FSDEB at `/scripts/packaging/build` for building Debian packages yourself. Tarballs are also listed under the downloads section.

How do I use FreeSWITCH?

The README points to the documentation index at freeswitch.org/confluence/ and to developer.signalwire.com under FreeSWITCH Explained for detailed instructions. Voice prompts come from the separate sound packages.

What is FreeSWITCH Developer?

It is the vendor documentation site the README links for detailed instructions, at developer.signalwire.com under FreeSWITCH Explained. The same README identifies SignalWire as the primary sponsor and says `mod_signalwire` is distributed in the code base so an install can pair with that platform.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. signalwire/freeswitch on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/signalwire-freeswitch.svg)](https://hysenlabs.com/projects/signalwire-freeswitch)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/signalwire-freeswitch.svg)](https://hysenlabs.com/projects/signalwire-freeswitch)

Was this useful?