Language: C
Organization: Meetecho
Maintainer: lorenzo-miniero
GitHub: meetecho/imquic
POC relay: lminiero.it port 9000 (raw QUIC + WebTransport; draft-18 since May 18, 2026, draft-19 deployed July 18 and merged to main July 19, 2026 for the Vienna Hackathon)
Overview
A C library for QUIC that includes MOQ Transport support alongside RTP over QUIC (RoQ). Built as part of the Janus WebRTC gateway ecosystem.
History
- 2026-05-18: Shipped IETF draft-18 — the second open-source implementation to do so (after moq-dev).
- 2026-05-20: draft-18 merged to
mainvia PR #25 (also folding in a RoQ demos refactor, PR #26); second open-source impl with draft-18 inmain, a 6-day spec-to-maincycle.
Draft Support
- draft-19 (merged to
main) — PR #32 “Add support for MoQT v19” (lminiero, opened July 8) merged July 19 (+1124/−211) — the first implementation PR explicitly targeting draft-19, somainnow carries draft-19 (previously the running relay was ahead of the repo). A first draft-19 build had been deployed to thelminiero.it:9000POC relay for the July-18 Vienna Hackathon; the July-19 merge folded it intomain, followed by relay fixes (“Allow REQUEST_UPDATE to PUBLISH as a subscriber”, FORWARD-related relay fixes, PUBLISH tweaks). The bulk of the draft-18 → -19 delta is the new filters: serialization/deserialization works and the basic filters function, butOBJECT_PROPERTY_FILTER/TRACK_PROPERTY_FILTERare currently ignored (open question on their intended semantics — echoed by ianswett’s moq-transport #1816 “Range filters only filter integer Properties” and Luke Curley’s July-19 stance that Hang will likely never implement filters). - draft-18 (since May 18, 2026) — partial: most of the wire-format changes from the draft-17 → draft-18 changelog (SUBGROUP_HEADER FIRST_OBJECT bit, FETCH ID delta encoding, PADDING message, SUBSCRIBE_TRACKS split from SUBSCRIBE_NAMESPACE, REQUEST_UPDATE on both, redirect via REQUEST_ERROR, new error codes); initially missing
REQUEST_UPDATEforSUBSCRIBE_NAMESPACE/SUBSCRIBE_TRACKS - draft-16 and draft-17 (version range:
0xff000010to0xff000011) — prior supported set - Supports version negotiation - can offer all supported versions or pin to a specific one
- Previously supported draft-11 through draft-16; draft-14 was dropped when moving to v17
- Not all features of all versions are fully implemented
Public Infrastructure
- Relay at
lminiero.it:9000(raw QUIC and WebTransport), tracking draft-18main; running a first draft-19 build as of July 18, 2026 (partial filter support — see Draft Support)
Recent Highlights
Day-by-day PR/issue history lives in the wiki log; this section keeps only durable milestones.
- First draft-19 relay deployment in the ecosystem, then draft-19 merged to
main— Miniero stood up a draft-19 build of thelminiero.it:9000relay for the July-18 Vienna Hackathon and put out a call for draft-19 peers, then merged PR #32 tomainJuly 19 (+1124/−211), making imquic the first tracked-repo implementation with draft-19 inmain. Filter serialization/deserialization and the basic filters work;OBJECT_PROPERTY_FILTER/TRACK_PROPERTY_FILTERare ignored pending clarity on their semantics. The wiki’s first tracked draft-19 interop endpoint (vs moq-dev’s draft-19 client/relay support), though the official interop target remains draft-18 per afrind. On July 20 the relay achieved the ecosystem’s first cross-implementation draft-19 interop — Luke Curley’smoq-cli(moq-dev) published/subscribed againstlminiero.it:9000in forced draft-19 (76,804 bytes, 5.23 s,ffprobe-validated H.264) as well as forced draft-18. - Live-media LOC demos — PR #27 merged at the June 2026 London hackathon:
imquic-moq-loc-sendcaptures webcam + mic and publishes audio (Opus) + video (H.264) LOC tracks;imquic-moq-loc-recvsubscribes, decodes, and renders via SDL2. Replaces the prior moq-clock-only demos and uses MSF for the catalog. See moq-loc. - Push-to-talk conversational demo — PR #31 merged June 19, with a live web demo at lminiero.it/moqp2t/: every client subscribes to the
push2talknamespace and holding spacebar publishes an audio track carried over QUIC datagrams. Client side built on Moqtail, plus a native demo in the repo — the first publicly-reachable real-time conversational-media app over MoQ the wiki has tracked, exercising the PUBLISH-driven (vs SUBSCRIBE-driven) delivery pattern. - LOC private-object payload prefix — PR #29 added an explicit payload prefix for LOC private objects, resolving the omit-the-block-vs-write-a-zero-count encoding question surfaced while building the LOC demos.
- Relay hardening — fixed a nested-namespace
SUBSCRIBE_NAMESPACE/SUBSCRIBE_TRACKSnotification bug found in interop testing (PR #30), plus follow-on NAMESPACE / NAMESPACE_DONE and LOC-sender crash fixes, and partialDYNAMIC_GROUPS/NEW_GROUP_REQUESTsupport in the relay demo.
Interop
- Registered in interop-runner matrix; became a registered draft-18 endpoint (June 2026, advertising draft-18/17/16), one of the first two draft-18 registrations alongside Nokia’s
moqt-nr - First v17 interop achieved with moq-dev (moq-dev/moq, Rust publisher + JS subscriber) (2026-04-01)
- London hackathon (June 2026): cross-impl object exchange with Kota Yatagai’s Moqtopus — Kota fixed a reciprocal publisher priority-bit bug in imquic (PR #28) — and with Suhas Nandakumar’s quicr/moq-web
- Active interop testing at IETF 125 Shenzhen and Boulder hackathon
Related
- lorenzo-miniero - Maintainer
- interop-endpoints - Public relay endpoints
- interop-runner - Test framework