Real-time communication platform built on Media over QUIC.
Try it at hang.live.
Hang combines a closed-source application layer with an open-source media streaming library:
- app — Web frontend built with SolidJS, Vite, and Tailwind CSS v4
- api — Backend running on Cloudflare Workers with Hono and Drizzle ORM
- native — Desktop/mobile app using Tauri v2
The frontend and backend share types via Hono RPC. Real-time media is streamed over WebTransport using the MOQ protocol, consumed as Bun workspaces from the pinned
moq/submodule.
app/ Web frontend (SolidJS + Vite)
api/ Backend API (Cloudflare Workers + Hono)
native/ Desktop/mobile app (Tauri v2)
dev/ Local relay server config
Required:
Recommended:
Clone the repo:
git clone --recurse-submodules https://github.com/moq-dev/hang.live.git
cd hang.liveWith Nix + direnv (recommended):
direnv allow
just install
just devWithout Nix:
just install
just devjust dev starts five processes concurrently:
- api — Cloudflare Workers dev server (via wrangler)
- app — Vite dev server on port 1420
- types — Watch API declarations for frontend RPC types
- relay — MOQ relay server
- auth — Local token verification service
| Command | Description |
|---|---|
just install |
Install workspaces, decoder assets, and API declarations |
just dev |
Run all dev servers |
just check |
Run linting and type checks |
just fix |
Auto-fix formatting and lint issues |
just build |
Build all packages |
just deploy |
Deploy the live API and app to Cloudflare |
just native |
Run the native desktop app |
Hang uses moq — an open-source library for real-time media streaming over WebTransport and QUIC. The @moq/* npm packages provide the protocol implementation, and the moq-relay binary (via nix flake) runs the local relay server. See moq.dev for full documentation.
Dual-licensed under MIT or Apache 2.0, at your option.
This migration pins MoQ as the moq submodule until the room package is released.
Clone with git clone --recurse-submodules, or run git submodule update --init
in an existing checkout, then just install.
The app uses the submodule's MoQ workspaces, so CI and local builds use the same source.
See CONTRIBUTING.md for setup, checks, and the Quest workflow. The quest backlog tracks planned bugs and improvements.