Janus is an open source, general purpose WebRTC server written in C and designed for Linux systems, with support for MacOS compilation and Windows Subsystem for Linux.
Janus addresses the need for a flexible WebRTC infrastructure by providing a modular server architecture that handles real-time media communication. The project operates as a plugin-based system where different communication patterns and features can be loaded as needed, allowing developers to build custom WebRTC applications without reimplementing core media handling. The server manages ICE negotiation, SRTP encryption, and media routing while exposing its functionality through multiple API transports including REST, WebSockets, RabbitMQ, MQTT, and Nanomsg.
Developers should choose Janus when building WebRTC applications that require a self-hosted, customizable media server rather than relying on third-party services. The project suits scenarios ranging from video conferencing to streaming and data channel applications. The main branch represents a multistream version that differs from the legacy branch, so teams should verify which version aligns with their requirements. Janus requires compilation from source and depends on numerous libraries for core functionality, with additional optional dependencies for specific features like data channels, REST APIs, or message queue integration.
The project maintains active continuous integration testing and participates in fuzzing programs to identify security issues. Community discussion occurs through a dedicated forum separate from issue tracking, with contribution guidelines documented for those submitting code or bug reports. The codebase undergoes static analysis scanning to catch potential defects before they reach users.