explaingit

meetecho/janus-gateway

9,088CAudience · developerComplexity · 4/5Setup · hard

TLDR

An open-source WebRTC media server written in C that you self-host to build real-time audio and video apps, video conferencing, audio bridges, live streaming, using a flexible plugin architecture.

Mindmap

mindmap
  root((Janus Gateway))
    What it does
      WebRTC server
      Media routing
      Real-time audio/video
    Plugins
      VideoRoom
      AudioBridge
      SIP gateway
      Lua custom logic
    Transports
      REST API
      WebSockets
      RabbitMQ
      MQTT
    Setup
      Compile from source
      Linux focused
      Many dependencies
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a self-hosted multi-party video conferencing system using the bundled VideoRoom plugin.

USE CASE 2

Create a live audio mixing room that combines multiple speakers into one stream using the AudioBridge plugin.

USE CASE 3

Set up a WebRTC-to-SIP gateway to connect browser-based calls to traditional phone systems.

USE CASE 4

Write custom media routing logic in Lua and load it as a Janus plugin without touching C code.

Tech stack

CWebRTCWebSocketsLuaRabbitMQMQTT

Getting it running

Difficulty · hard Time to first run · 1h+

Must compile from source on Linux and install many system libraries, specific library versions can break the build, so check README compatibility notes first.

In plain English

Janus is an open-source server that handles real-time audio and video communication over the web, using a technology called WebRTC. WebRTC is what lets browsers have video calls without installing plugins, and Janus is the server-side piece that manages those connections, routes media between participants, and makes features like video conferencing, live streaming, and audio bridges possible for developers who want to build such systems themselves. The server is written in C and runs on Linux, with macOS also supported. It exposes an API that your application talks to in order to create sessions, join rooms, and exchange media. You can reach that API over several different transports depending on what your application needs: a plain REST interface, WebSockets, RabbitMQ, MQTT, or a messaging system called Nanomsg. Each of these is optional and only compiled in if you install the corresponding library. Janus is built around a plugin architecture. The core server handles signaling and media routing, and the specific use-cases live in plugins that you load at startup. Plugins cover common scenarios like multi-party video conferencing, audio mixing (AudioBridge), SIP gateways for connecting to phone systems, recording, screen sharing, and data channels. There is also a plugin for running custom logic written in Lua or Duktape if none of the built-in plugins fit your needs. Installation requires compiling from source and installing a number of system libraries. The README documents the required and optional dependencies in detail, with package installation commands for Fedora and Ubuntu, and notes about specific library versions that are known to cause problems. The project has an active community forum and a documentation and demo site linked from the README.

Copy-paste prompts

Prompt 1
I want to build a self-hosted video conferencing app. Walk me through installing Janus on Ubuntu and configuring the VideoRoom plugin.
Prompt 2
Show me how to connect a React frontend to a Janus server over WebSockets to create and join a video call room.
Prompt 3
I want to use the Janus SIP plugin to bridge browser WebRTC calls to a telephone system. What configuration does that require?
Prompt 4
How do I write a custom Lua plugin for Janus to add my own media routing logic without modifying the C server?
Open on GitHub → Explain another repo

← meetecho on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.