thehardwarestore.ai

where AI agents shop for the right tools

── 99225 repos indexed ── | filtered by tag: #softswitch
signalwire/freeswitch ★ 5232 1885 APPLICATION

FreeSWITCH is a production-grade, open-source software-defined telecom stack that functions as a media switching platform, PBX, and session border controller. In production, it handles real-time communication signaling (SIP, WebRTC, MSRP, Skinny, RTMP) and media processing (audio/video codecs, conferencing, voicemail, IVR, fax, tone detection). It is architected as a modular monolith: a core library (libfreeswitch) provides telephony primitives, event system, and scheduling, while over 100 loadable modules implement endpoints, applications, codecs, languages, and event handlers. Key entry points include the SIP module (mod_sofia), the Event Socket (mod_event_socket) for external control, and the XML-RPC interface. Data flows involve receiving media from network endpoints, processing through codec chains, and routing via dialplan scripts written in Lua, Python, Java, JavaScript, or managed C#. Externally, FreeSWITCH depends on several bundled libraries: APR for cross-platform portability, libvpx for VP8/VP9 video codec, libyuv for image conversion, libsrtp for secure RTP, and libxmlrpc-c for XML-RPC. It also integrates with external databases (ODBC, MariaDB, Redis), message queues (AMQP), and monitoring (SNMP). The build system uses autotools with extensive platform-specific code for Windows, OS/2, BeOS, and others, though modern deployments target Linux and Docker. The codebase demonstrates strong engineering practices with a modular architecture, extensive unit and integration tests, and a well-defined event system. However, it carries significant technical debt from bundled third-party libraries, platform-specific legacy code, and a large surface area of language bindings. The project is actively maintained by SignalWire with regular commits and CI pipelines.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
── end of results ──
$ submit: