Draft 18 MOQ Transport (MOQT) libraries and relay components.
Rust and TypeScript tooling for publishers, subscribers, demos and relay deployments.
MOQtail is a draft 18-compliant MOQT toolkit for building publisher, subscriber, and relay applications. The repository includes Rust and TypeScript libraries, reference clients, and a relay that can be run locally or pulled as a container image from GHCR. The relay and Rust client support both WebTransport (https://) and raw QUIC (moqt://) on the same port.
Warning
Branch status: main is a work in progress while the draft 18 upgrade lands, and its APIs and wire behavior may change without notice. For a stable, draft 16-compliant MOQtail, use the draft-16 branch.
Important
To cite MOQtail in your academic research and elsewhere, please use:
Zafer Gurel, Deniz Ugur and Ali C. Begen, "MOQtail: open-source, IETF-compliant MOQT protocol libraries," in Proc. ACM Multimedia Systems Conf. (MMSys), Hong Kong, Hong Kong, Apr. 2026 (DOI: 10.1145/3793853.3799817)
The TypeScript library targets browser and WebTransport-based MoQ applications.
Highlights:
- Type-safe application APIs
- WebTransport integration
- Client-side development workflow with the demo app
Library documentation: libs/moqtail-ts/README.md
The Rust library provides the core protocol implementation and utilities used by the relay and other Rust applications in this workspace.
Library documentation: libs/moqtail-rs/README.md
The relay is the deployable Rust service that forwards MoQ messages between publishers and subscribers. It accepts both WebTransport and raw QUIC connections on the same UDP socket/port, demultiplexing them via ALPN.
Local run:
cargo run -p relay -- --port 4433 --cert-file apps/relay/cert/cert.pem --key-file apps/relay/cert/key.pemContainer image:
docker run --rm \
-p 4433:4433/udp \
-v "$PWD/apps/relay/cert/cert.pem:/certs/cert.pem:ro" \
-v "$PWD/apps/relay/cert/key.pem:/certs/key.pem:ro" \
ghcr.io/moqtail/relay:latestRelease images are published to ghcr.io/moqtail/relay with latest and version tags from relay@* releases. Branch and commit SHA tags are also published for CI builds.
To build the image locally from the workspace root:
docker build -f apps/relay/Dockerfile -t moqtail-relay .For local certificate generation and browser trust setup, see apps/relay/cert/README.md.
The relay and the Rust test client (apps/client) support two transports on the same port:
- WebTransport — connect with an
https://server URL (e.g.https://127.0.0.1:4433). Used by browser clients andmoqtail-ts. - Raw QUIC — connect with a
moqt://server URL (e.g.moqt://127.0.0.1:4433/path). Since raw QUIC has no HTTP CONNECT to carry the authority/path, the client sends them as CLIENT_SETUP parameters instead.
# WebTransport
cargo run --bin client -- -c publish --server https://127.0.0.1:4433
# Raw QUIC
cargo run --bin client -- -c publish --server moqt://127.0.0.1:4433git clone https://github.com/moqtail/moqtail.git
cd moqtail
npm installContributions are welcome. Open an issue or submit a pull request for improvements, bug fixes, documentation, or interoperability work.