MoQ is under active development. APIs and protocols may change between releases.

Skip to content

Media over QUICLive media without latency buildup

Real-time latency at CDN scale, for video, audio, and any live data.

What is MoQ?

Media over QUIC (MoQ) is a live media protocol built on QUIC. A publisher sends a broadcast made of tracks; each track is a series of groups (a group of pictures, a second of audio, one JSON snapshot). Most groups use independent QUIC streams; eligible single-frame groups can use unreliable datagrams. Relays forward and cache the stream-delivered groups without parsing them, so the same infrastructure carries video, audio, and arbitrary data.

This project is the reference implementation: a Rust relay and toolchain, a TypeScript browser stack, and bindings for C, Python, Kotlin, Swift, Go, and Dart. It speaks moq-lite, a simple profile that is forward-compatible with the IETF moq-transport drafts.

What you can build

Use caseReach for
Twitch-style live streamingIngest with OBS, RTMP or SRT, distribute with moq-relay, watch with <moq-watch>, and keep legacy players via the HLS gateway.
Conferencing<moq-publish> and <moq-watch> in the browser, one broadcast per participant, plus the WebRTC gateway for WHIP/WHEP clients.
Voice and video AIServer-side media in Rust or Python with hardware codecs, faster-than-real-time playback in the browser. See MoQ for AI.
Real-time dataChat, game state, telemetry, and control channels over the same relays with moq-net or @moq/net.
Interactive streamsMedia down, input up. MoQ Boy is a crowd-controlled Game Boy built this way.
Native and mobile appsOne Rust core behind Swift, Kotlin, Go, Dart, and C bindings.

Choose a path

GoalStart here
Run the demo locallyQuick start
Install the relay or CLIInstall
Publish, play, or convert mediaApplications
Add MoQ to an appLibraries
Operate a relaymoq-relay
Understand the designConcepts
Read the specsInternet-Drafts
Teach your coding agentAgent setup

Licensed under MIT or Apache-2.0