Skip to content

Libraries

MoQ ships libraries in a handful of languages. Rust (native) and TypeScript (web) are the primary implementations; everything else wraps the Rust core under the hood.

Primary

Rust native

The reference implementation. Used by every server-side tool and by the FFI core that the other language bindings link against.

TypeScript web

The browser implementation. Uses WebTransport, WebCodecs, and WebAudio to run MoQ natively in the browser without polyfills (in supported browsers).

FFI bindings

These all link against the same Rust core (via libmoq + UniFFI) and present an idiomatic API in their host language.

C

Raw C bindings via libmoq. The lowest-level entry point and the foundation for every other binding listed below.

Python

Async/await with asyncio. Published as moq-net on PyPI.

Kotlin

Coroutines and Flow for Android and the JVM. Published as dev.moq:moq on Maven Central.

Swift

Async sequences and structured concurrency for iOS, iPadOS, and macOS. Distributed via Swift Package Manager.

Go

cgo bindings with prebuilt static libraries per platform. Resolved via go get github.com/moq-dev/moq-go.

Picking a language

  • Server, CLI, or anything nativeRust
  • Web browser or Node/Bun/DenoTypeScript
  • iOS / macOS appSwift
  • Android app or JVM serviceKotlin
  • Scripts, ML pipelines, prototypesPython
  • Go service or toolingGo
  • Anything else with a C ABIC

All FFI bindings expose the same protocol surface as the Rust core, so a publisher in Python can be consumed by a Swift subscriber, etc.

Licensed under MIT or Apache-2.0