qumo is a high-performance Media over QUIC (MoQ) relay server with peer-based content discovery, enabling distributed media streaming over the QUIC transport protocol.
📚 Documentation: https://qumo-dev.github.io/qumo/
- 🚀 High-Performance Relay: a MoQT relay built on QUIC
- 📡 MoQT Protocol: Media over QUIC Transport (moq-lite draft-04) via gomoqt
- 🔗 Peer-Based Topology: relays connect to each other via
ANNOUNCE_PLEASEfor decentralized content discovery - 📊 Observability: Prometheus metrics, health probes, and status APIs
- 🔒 TLS Security: TLS 1.3 by default; clients verify the relay's certificate by default
- 🐳 Docker: env-var zero-config; prebuilt multi-arch images on GHCR (
ghcr.io/qumo-dev/qumo)
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/qumo-dev/qumo/main/install.ps1 | iex"Linux & macOS:
curl -fsSL https://raw.githubusercontent.com/qumo-dev/qumo/main/install.sh | shgo install github.com/qumo-dev/qumo@latestDownload an archive from GitHub Releases and extract it. Binary releases are produced for Linux (amd64/arm64), macOS (amd64/arm64), and Windows (amd64/arm64).
# Linux/macOS example
tar xzf qumo_<version>_linux_amd64.tar.gz
./qumo versionSee docker/README.md for compose examples, GHCR usage, and deployment options.
Requires Go 1.27+, Deno (mage build embeds the web UI built with Deno + Vite) and Mage (go install github.com/magefile/mage@latest; mage help lists the targets).
git clone https://github.com/qumo-dev/qumo.git
cd qumo
mage build # builds bin/qumo with version info (also embeds the web UI)
# or: go build -o qumo .qumo relay # Start a MoQ relay server (QUIC/MoQT, WebTransport, WebSocket, peer mesh)
qumo rtmp # Start an RTMP ingest server (bridges RTMP → MoQT over TCP :1935)
qumo rtsp # Pull from an RTSP source (e.g. an IP camera) and republish as MoQT
qumo rtsp-push # Start the RTSP push ingest server (TCP :8554; bridges RTSP → MoQT)
qumo hls # Start the HLS/DASH egress server (subscribes to a relay, serves HLS/DASH)
qumo funnel # Funnel many HTTP senders into one MoQT track (announce + POST records)
qumo playground # One-command local demo: in-process relay + embedded web UI on http://127.0.0.1:8080
qumo loadgen # Out-of-process capacity load generator (publish|subscribe) — see [docs/perf](docs/perf/README.md#benchmarking--capacity)
qumo auth # Set up the credentials a relay verifies (keygen / token)
qumo doctor # Explain effective runtime config (GC target) — read-only
qumo update # Update qumo to the latest release (--check to verify without applying)
qumo version # Print build-time version infoConfiguration is via environment variables; see relay-config.example.env.
- TLS & client verification — docs/site/content/en/docs/deployment/tls.md; in short, servers present TLS from
CERT_FILE/KEY_FILE, clients verify by default, andqumo hlsverifies against the system roots (trust a specific cert withRELAY_CA_FILE, or useRELAY_TLS_INSECURE=truefor a self-signed dev relay). - Relay peers / mutual TLS — same deployment/tls.md doc; relays authenticate via a relay CA (
CA_FILE,PEER_CERT_FILE,PEER_KEY_FILE), separate from the public certificate they serve browsers. - Docker — docker/README.md.
- Relay implementation — internal/relay/README.md.
- Build system (Mage) — magefiles/README.md.
- Demo server & embedded web UI — playground/README.md.
- Performance docs, benchmarking & capacity — docs/perf/README.md.
- CHANGELOG — CHANGELOG.md.