Skip to content

openmoq/moqx

moqx — Media Over QUIC Relay

ci main ci pr Latest release License Last commit Open issues Open PRs MOQT

moqx

The OpenMOQ Relay — a MoQT relay server based on moxygen (upstream: facebookexperimental/moxygen).

Architecture

For the underlying moxygen library architecture (session model, data plane, threading, transport abstraction), see deps/moxygen/ARCHITECTURE.md.

MoqxRelay is a hard fork of moxygen's MoQRelay. We copy the relay core into moqx so we can evolve it independently (threading model, custom cache miss handling, chained caches, etc.) while still using moxygen's lower-level building blocks as libraries:

  • MoQForwarder — fan-out engine, used as-is from moxygen for now. May need to fork in the future to accommodate threading model differences.
  • MoqxCache — object cache, hard-forked from moxygen. Customizable for moqx-specific functionality. and chained cache support may be upstreamed to openmoq/moxygen or maintained in our fork.
  • MoQSession / MoQServer / MoQRelaySession — session and server infrastructure, used as libraries.

MoqxRelayServer extends MoQServer to wire up MoqxRelay as the publish/subscribe handler and create MoQRelaySession instances for incoming connections.

Documentation

Design Documents

Quick Start

Prerequisite: CMake 3.22+ is required. All current targets ship a new-enough version out of the box: Ubuntu 22.04+, Debian 12+, recent macOS Homebrew. Verify with cmake --version. build.sh aborts early if cmake is missing or too old (override with MOQX_SKIP_CMAKE_CHECK=1 if you know what you're doing).

git clone https://github.com/openmoq/moqx.git && cd moqx
git submodule update --init
sudo deps/moxygen/standalone/install-system-deps.sh   # system libs (both modes)

./scripts/build.sh setup     # download prebuilt deps (~1 min)
./scripts/build.sh           # build
./scripts/build.sh test      # test

System libraries are needed in both dependency modes — the moxygen tarball ships folly/fizz/mvfst/proxygen statically, but its CMake config still does find_dependency(fmt, Glog, ...) and folly itself transitively needs OpenSSL/Boost. build.sh setup's system-dep check only fires when falling back to source, but the build step needs the libs regardless.

See BUILD.md for full build and test instructions (dependency modes, sanitizer profiles, Docker), and RUNNING.md for relay operations.

License

Apache 2.0 — see LICENSE.

About

The OpenMOQ Relay

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors