Skip to content

Repository files navigation

MOQtail

Rust Checks JavaScript Checks License: Apache-2.0 GHCR Relay Image Ask DeepWiki

Draft 18 MOQ Transport (MOQT) libraries and relay components.
Rust and TypeScript tooling for publishers, subscribers, demos and relay deployments.

MOQtail

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)

Components

moqtail-ts

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

moqtail-rs

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

Relay

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.pem

Container 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:latest

Release 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.

Transports: WebTransport and raw QUIC

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 and moqtail-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:4433

Getting Started

Prerequisites

Installation

git clone https://github.com/moqtail/moqtail.git
cd moqtail
npm install

Contributing

Contributions are welcome. Open an issue or submit a pull request for improvements, bug fixes, documentation, or interoperability work.

About

Draft 18-compliant MOQ Transport (MOQT) protocol libraries for publisher, subscriber and relay components, featuring real-time, live and on-demand demo applications using the LOC and CMSF formats.

Topics

Resources

Contributing

Stars

103 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages