Architecture
Crate dependency graph
Section titled “Crate dependency graph”moqtap-codec (MIT) ← pure data: bytes ↔ Message structs ↓moqtap-trace (MIT) ← data model: TraceEvent, .moqtrace format ↓moqtap-session (MIT) ← connection: quinn, TLS, streams ↓moqtap-client (MIT) ← endpoint: subscribe + publish + fetch ↓moqtap-app (proprietary) ↓Vue 3 frontend ↑@moqtap/types (auto-generated TS types)Design principles
Section titled “Design principles”- Codec is pure —
moqtap-codechas no I/O dependencies. It’s just bytes in, structs out. - Lenient parsing — unknown fields produce warnings, not errors. A debug tool must show you what’s wrong.
- quinn hardcoded — no transport trait abstraction. quinn is the only mature Rust QUIC library.
- Full bidirectional endpoint —
moqtap-clientcan both subscribe and publish per the MoQT spec. - Auto-generated types — TypeScript types are derived from Rust structs via
ts-rs, ensuring the IPC contract never drifts.
Data flow (client mode)
Section titled “Data flow (client mode)”User (Vue UI) → Tauri IPC → Rust commands → quinn (QUIC) → MoQT Relay ↓User (Vue UI) ← Tauri events (60Hz batched) ← TraceEvent ← quinn