Website: openmoq.org GitHub: openmoq

Overview

An industry consortium advancing MOQ-based technology through high-performance, open-source software. Mission: deliver practical implementations that enable the next generation of media transport.

Members

Charter Members

  • Akamai
  • CDN77
  • Cisco
  • RED5
  • Synamedia
  • YouTube

Standard Members

  • Ateme
  • Bitmovin
  • Nano Cosmos
  • Qualabs
  • Vindral
  • Wowza

Academic Members

  • University of Klagenfurt
  • Özyeğin University

Repositories

openmoq/moxygen (moqx)

  • GitHub: openmoq/moxygen
  • Fork of Meta’s moxygen relay, serving as the buffer repo for the planned moqx server/relay
  • C++
  • Version set: drafts 16 + 18 (draft-14 dropped, late Sep 2026). The relay config now rejects moqt_versions: 14 and the published image defaults to [16, 18]. The interop client offers only moqt-18, moqt-16 (moqx #770, merged Sep-28), and the runner registration change is runner #131 (OPEN, approved). Before that it was a draft-14/16 “floor relay” (see Recent Highlights). The codebase also carries a qmux listener. See Interop.

openmoq/moq-relay-test

openmoq/moqxr (formerly mondain/moqxr)

  • GitHub: openmoq/moqxr (mondain/moqxr redirects here)
  • Origin Publisher, Contribution, and Ingest CLI for OpenMOQ (C++), maintained by Paul Gregoire (mondain)
  • draft-18 support shipped May 16–18, 2026 — the third open-source implementation to ship draft-18, after moq and imquic
  • Capabilities added since: a live-object publish API, an optional MSF media timeline track, an SRT MPEG-TS ingest path (fMP4 repackaging → MoQ objects), and a prebuilt static-library SDK (picoquic/picotls bundled) consumed by mondain/moq2ts
  • Latest release: v0.4.0 (Sep 28, 2026). It adds draft-21 as a selectable MOQT draft (#45, +11,954/−231), with fixes for draft-17+ LARGEST_OBJECT, the draft-17/18 AbsoluteRange End Group delta and draft-21 filter-end behaviour, and shares draft-21 wire vectors with red5-moq-relay and moq-playa. It follows a fast v0.3.x series (v0.3.23–v0.3.27, Sep 5–25). Early history: v0.2.1 (Apr 17, draft-16 interop fixes); v0.2.0 (Apr 15) added a draft-16 SUBSCRIBE KVP parser, dropped the WebTransport subprotocol for draft-14, and made control-message handling non-blocking

openmoq/moq5 — the C protocol core

  • GitHub: openmoq/moq5 — C, Apache-2.0, created 2026-06-23
  • Registered in the interop-runner under organization “Red5 Pro” as the moq5 client endpoint, currently running at-target draft-18; supports draft-16 and draft-18, selected by transport negotiation and never auto-detected
  • Sans-I/O, zero-dependency C protocol core with an explicit allocator and a shared transport bridge — designed to be embedded rather than run standalone
  • A media service tier on top (moq_endpoint_t, moq_media_receiver_t, moq_media_sender_t) targets FFmpeg / VLC / GStreamer / OBS integration
  • Deterministic FoundationDB-style seed-replayable simulation testing (moq-sim / SimPair) — an unusually rigorous test approach for this ecosystem
  • Companion: rwl4/gst-moq — a minimal C GStreamer plugin over MOQ5

openmoq/moq-playa — Red5’s TypeScript player suite

  • GitHub: openmoq/moq-playa — TypeScript, Apache-2.0, created 2026-06-06
  • Correction: this wiki previously recorded moq-playa as “planned / not yet publicly available (as of 2026-04-10)“. It has been public and shipping since June 2026.
  • A full-stack TypeScript MoQT reference implementation published as two npm scopes, all at v0.5.7 (2026-08-18): @moqt/transport (sans-I/O core), @moqt/loc, @moqt/msf, @moqt/playback (jitter buffer, A/V sync), @moqt/webtransport, @moqt/browser, @moqt/player, plus a batteries-included @playa/player
  • WebCodecs playback path with MSE/CMAF fallback and ABR
  • npm scope migration (Oct-1, #21, +761/−582): @moqt/* → @openmoq/*, and @playa/player → @openmoq/playa. Nothing is published under @openmoq on npm yet, so the v0.5.x @moqt/* packages remain the installable ones.
  • Registered as a draft-18 interop client in the interop-runner as moq-playa (runner #119 merged Sep-2, at the draft-18 hackathon) — runs over WebTransport, negotiating draft-18 via the WT subprotocol; CI publishes ghcr.io/openmoq/moq-playa-interop-client
  • LOCMAF playback shipped (merged to main 2026-09-19 08:29 UTC; final size +9,801/−67 across 242 files) — PR #15 “play LOCMAF tracks (draft-einarsson-moq-locmaf-01)” (Paul Gregoire, opened 2026-09-14, second revision Sep-17, merged Sep-19) adds a standalone @moqt/locmaf package — codec, deserializer and encoder, canonical CMAF-chunk reconstruction incl. saiz/saio/senc — and routes LOCMAF tracks down either the existing MSE/CMAF path or a WebCodecs frame path (locmafDecoding: 'mse' | 'frame'). It is the first implementation anywhere to exercise the draft’s §16 frame interface and §14 event-only tracks (emsg v0/v1), and it validates against Eyevinn/locmaf’s golden vectors vendored and pinned by SHA-256 (all 38 objects reconstruct and re-encode byte-exact). CENC/EME playback is the declared gap. Red5’s own relay was exercised end-to-end in TRANSPARENT and FULL modes (the latter reconstructing and validating every object). This makes moq-playa the second non-Eyevinn LOCMAF implementation after shaka-player, and the most complete reading of the draft so far. Post-merge follow-ups (Sep 20–21): LOC-04 support, LOCMAF raw-chunk sample validation, and a player fix keeping request IDs separate from track aliases. Sep-28: generic EME/DRM in the MSE adapter (Widevine by default, any key system via DrmConfig; PR #18) and a catalog-subscribe retry on DOES_NOT_EXIST for viewers who arrive before the publisher (#19). draft-21 (subscriber, player and publisher; moqt-21, no Joining FETCH) was opened as PR #20 (+2,603/−265) and played end to end against red5-moq-relay, a repo not visible publicly. On Oct-1 #20 was closed unmerged: rwl4 moved its commits plus his own fixes onto a long-lived feature/draft-21 branch (15 commits ahead of main), so draft-21 is not on main yet.

mondain/moqzr

Goals

  • Distribute development costs across organizations
  • Accelerate MOQ through collective expertise
  • Ensure interoperability via standardized implementations
  • Lower market barriers for new use cases beyond media (financial feeds, gaming, IoT, AR/VR)

Development Status

Core infrastructure development is ongoing. The consortium has completed industry alignment, established a technical roadmap, and finalized legal structure and governance.

Recent Highlights

Day-by-day PR/issue history lives in the wiki log; this section keeps only durable milestones.

  • Alan Frindell’s OpenMOQ consulting arrangement disclosed (July 20, 2026) — in an IETF “Change in employment disclosure” to the MoQ list, Alan Frindell noted he has moved from full-time to part-time at Meta (Meta still sponsors his IETF participation, which remains on Meta’s behalf), and in his non-Meta hours now runs a consulting business contracted with OpenMOQ to build open-source software — specifically the moqx relay. This formalizes the sponsorship behind the moqx work he has driven on the fork, and gives OpenMOQ a named, funded relay project.
  • Multi-threaded relay scaling — Alan Frindell (afrind, Meta) drove a sustained effort (late May–June) making moqx deployable with threads > 1: a cBPF reuseport worker-steering filter, recvmmsg batch receives, per-thread local forwarders, and a relay_thread config knob, plus follow-on lock-free-mode relay-correctness hardening.
  • CAT-token authentication — Paul Mondain’s PR #264 (merged June 3, the largest single moqx merge) added opt-in CAT-style token auth/authorization for MOQT relay services, verifying signed CWT/HMAC exp/moqt/moqt-reval claims; afrind then refactored it into per-session auth filters, and a CAT4MOQ / C4M issuer utility followed.
  • Floor-relay version policy — moxygen (moqx) deliberately defaults to advertising draft 14/16 and excludes draft-18 (June 16–17), staying a stable floor relay while moq-rs-draft-18 carries the at-target draft-18 interop cells. A known hazard (Issue #472) is that the default version order can cap negotiation at 16 even when 18 is mutually supported. Superseded late September 2026: moqx dropped draft-14 and now defaults to [16, 18] with 18 preferred (#770). The nightly shows it as a persistent moq-rs-draft-14 → moqx failure from Sep-29, and it is the first implementation to leave the runner’s draft-14 band on purpose.
  • London hackathon (June 9) — afrind brought the relay up as a public draft-18 endpoint and shipped moq_decode.py, a standalone draft-18 wire decoder for interop debugging, entering London with CAT-token auth, auto-regression CI, and the multi-thread stack in place.
  • draft-18 codebase capabilities — although the default relay stays on 14/16, the codebase gained draft-18 message handling (akash-a-n’s SUBSCRIBE_TRACKS port, PR #411) and a qmux listener (PR #420), the latter landing the same day moq added its own qmux listener.
  • Observability + deployment hardening (July) — afrind added a self-contained live Prometheus metrics dashboard and perf-test client metrics; gmarzot added in-memory PKCS#12 TLS bundle support (PR #460), a no-sudo onboarding quickstart, and native Debian/Ubuntu build support.
  • Contributor footprint — Tim Evens (Cisco) joined on the build system (CPM dependency migration, Debian + macOS toolchain fixes), widening Cisco’s MoQ footprint; most moqx churn is afrind’s, with gmarzot, akash-a-n, peterchave, and mondain also contributing. Meta’s moxygen upstream stayed comparatively sparse as this work landed on the fork.
  • Governance incident resolved — an April OpenMOQ dispute involving Mike English and Giovanni Marzot (a “suspicious AI PR” on the interop runner) was resolved May 18, with Marzot returning as an active contributor.

Interop

  • openmoq/moxygen (moqx) in the interop-runner since Apr 2026 — strong results as a relay: moq-dev-js ↔ moqx 6/6, moq-rs-draft-16 ↔ moqx 5–6/6, moq-rs ↔ moqx all pass.
  • moxygen relay endpoint at fb.mvfst.net:9448 on versions 14/16/18 — the first publicly-announced draft-18 relay endpoint (brought up June 9); see interop-endpoints.
  • First cross-impl draft-18 interop attempt: mondain/moqxr ↔ imquic (May 19–20) surfaced a bidi-vs-uni SETUP-stream divergence, fixed within ~10 hours.

Related