moq-go
Go implementation of MoQ Transport at draft-20, with a transport-agnostic session library, a reference relay that runs standalone or as several routing instances, and LOC/MSF/CMSF media packaging.
Category
Libraries & SDKs
License
Open Source
Status
Active
Languages
Go
MoQT Draft Support
Media Formats
moq-go is a Go implementation of the Media over QUIC drafts by floatdrop: a transport-agnostic session library, a reference relay, media packaging libraries, and demo publisher and subscriber CLIs. It is library and relay code rather than a player — payloads stay opaque to every layer, and an application plugs its own codec stack in at the LOC boundary.
The repository’s default branch is draft-20, and it is the only entry in this directory that targets that draft alone.
Specifications tracked
- MoQ Transport —
draft-ietf-moq-transport-20 - Low Overhead Media Container (LOC) —
draft-ietf-moq-loc-04 - MoQ Streaming Format (MSF) —
draft-ietf-moq-msf-01 - CMAF-compliant MSF (CMSF) —
draft-ietf-moq-cmsf-01
Key features
SessionAPI over any transportConn, client or server, after the SETUP handshake- Reference relay (
cmd/relay), single instance out of the box - Several relay instances routing across each other through a
DiscoveryStore; the interface and an in-memory backend ship in-tree, a distributed backend deliberately does not, so the module never pulls in its dependency weight - MSF catalogues with CMAF-packaged media, and a raw-MOQT path with no MSF or CMSF at all
- Demo CLIs:
cmd/videofor packaged media,cmd/clockfor the simpler case
Install
go get github.com/floatdrop/moq-goRequires Go 1.27 or newer. Dual licensed, Apache-2.0 or MIT.
Interop
Registered in the MoQ interop runner in both the relay and client roles, with images published to GHCR. It advertises the moqt-20 ALPN only, so it negotiates with draft-20 peers and nothing else.
Note
The API is pre-1.0 and the wire format follows drafts that are still moving, so both change as the specifications do.
Not the only Go implementation here: moqtransport by Mathis Engelbart is the other, targeting earlier drafts.