btw: MoQ is under active development. The APIs and protocols are still evolving and will change. Most of this documentation is AI generated until things get more stable.

Skip to content

Rust Environments

The same Rust crates (moq-net, hang) target two very different environments. moq-net is transport-agnostic: it runs over anything that implements web_transport_trait::Session, so the only thing that changes between environments is which transport you hand it.

Native server, desktop, mobile

Servers, CLIs, desktop apps, and mobile (via the FFI bindings). Uses moq-native to stand up a QUIC endpoint with quinn and rustls, with automatic WebSocket fallback. This is the common case.

Native guide

WebAssembly browser

Compile a Rust client to wasm32-unknown-unknown and run it inside a browser tab, reusing the browser's own WebTransport. Useful when you want to share Rust logic between native and web instead of maintaining a separate TypeScript client.

WASM guide

Licensed under MIT or Apache-2.0