Getting started
Introduction
Lumyx is a WebRTC SFU with observability built into the media path — one binary carries signaling, forwarding and the dashboard, and the collector reads the six metrics below off RTCP as packets pass through.
What Lumyx is
Section titled “What Lumyx is”Lumyx is a selective forwarding unit (SFU) for real-time video and audio: it terminates ICE, DTLS and SRTP from every peer in a room and forwards each publisher’s tracks to the subscribers who need them, without transcoding. Clients drive it over a WebSocket with Lumyx’s own JSON signaling protocol, specified in the repository README.
What sets it apart is the second job it does on the same packets: a metrics collector sits in the media path itself, so packet loss, RTT, jitter, NACK ratio, freeze ratio and bitrate are measured directly rather than sampled from a separate exporter. Every peer gets default thresholds and alerting from the moment it connects.
How it’s put together
Section titled “How it’s put together”Signaling, forwarding, the metrics collector and the dashboard all run inside one Rust binary — no Redis, no separate signaling service, no sidecar to scrape. It starts with no config file and no external store; you add a Postgres or object storage backend only when you need retention past the in-memory window.
peer ──ICE/DTLS/SRTP──▶ lumyx (signaling · forwarding · collector · dashboard)
│
├─▶ RTCP read in the media path → 6 metrics
├─▶ thresholds + 30s debounce → alerts
└─▶ /metrics (Prometheus) · dashboard :3000
Open source
Section titled “Open source”Nothing is held back from the MIT repo: the SFU, all six metrics, default thresholds and the dashboard are all there.
github.com/lumyx-dev/sfu-core ↗