moq-boy
A Rust binary that runs a Game Boy Color emulator, encodes its framebuffer and audio as MoQ tracks, and accepts button input from any number of viewers.
This is the server side of the MoQ Boy demo. See that page for the architecture breakdown — broadcast layout, tracks, auto-pause, etc. The browser-side counterpart is @moq/boy.
Highlights
- On-demand emulation — the emulator only runs while at least one viewer is subscribed to the video track.
- Hang container format — video and audio flow through moq-mux so standard
hangplayers can consume them. - Raw JSON metadata —
statusandcommandtracks bypass the container and publish JSON directly to moq-lite groups.
Running Locally
bash
just demo boyThis starts a localhost relay, the emulator, and a Vite dev server. A default ROM is downloaded on first run. To load a custom ROM:
bash
just demo boy start path/to/game.gbSee the setup guide for controls, reset behavior, and the authenticated/anonymous prefix split.
Source
Next Steps
- Read the demo architecture for tracks, broadcast layout, and how discovery works
- See the @moq/boy package for the browser player
- See moq-lite for the transport layer and moq-mux for the container format