// the find
signalwire/freeswitch
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.
FreeSWITCH is a C-based telephony switch — the open-source alternative to Asterisk — that handles SIP, WebRTC, and traditional telco signaling, and can run anything from a single PBX to a carrier-scale softswitch. It's for people building voice/video infrastructure (PBX, conferencing, SBC, IVR) who need protocol depth and control that hosted VoIP APIs don't give you.
The mod_* architecture is genuinely modular — you load only sofia (SIP), mod_conference, mod_curl, etc., and can embed scripting (Lua, JS, Python, Perl) directly into the dialplan without touching C. It has two decades of production hardening behind it: carriers and PBX vendors run this at serious scale, so the signaling edge cases are mostly already found. Protocol breadth is real — SIP, WebRTC, IAX-adjacent stuff via modules, fax (T.38), and transcoding across a wide codec set in one process.
Documentation lives on an external Confluence wiki, not in the repo, and the README mostly just links out — there's no quickstart you can follow without leaving GitHub. Configuration is XML-driven and verbose; getting a working dialplan means understanding FreeSWITCH's config model, not just reading code. Building from source pulls in a long dependency chain (the repo ships separate Dockerfiles per distro just to manage this), so packaged installs are the realistic path for most users. It's C with manual memory management across a large, old codebase, and the README's first line of defense for real problems is 'contact coreteam@freeswitch.com' — a sign that free community support thins out fast once you hit anything nontrivial.