Abstract magenta and cyan WebRTC topology for Huddle meetings

Own the room. Run the call.

Self-hosted browser meetings with waiting rooms, recordings, and host authority built on LiveKit.

Enter the meeting signal.

Paste a room code or shared link. Guests knock first, then the host admits them.

Paste a room code or full Huddle URL.

The host gets the switchboard.

Guests get one link. Hosts get entry, media, recording, and room authority.

Abstract magenta and cyan host control modules for Huddle

Control is a product surface.

Huddle treats meeting authority as visible software: guests wait, hosts decide, and secrets stay server-side.

Gate guests before the room

Shared links can stay simple while the host decides who crosses the threshold.

Keep authority on the server

JWT grants, mute actions, removal, and recording all pass through the API.

Record to your storage

LiveKit Egress writes room-composite files to MinIO, then Huddle brokers the download.

Trust boundaries you can inspect.

Browser media, server authority, LiveKit routing, and storage each stay in their lane.

docker compose -f infra/docker-compose.yml up -d

Local development runs the same shape as deployment: web, API, LiveKit, Redis, Postgres, and MinIO.

  1. Browser

    Next.js handles the lobby, pre-join checks, call controls, guest knock, and recordings.

  2. API

    NestJS mints tokens, owns room authority, validates host actions, and receives webhooks.

  3. LiveKit

    The SFU carries audio, video, screen share, chat, TURN, and room-composite egress.

  4. Storage

    Postgres keeps rooms, Redis coordinates state, and MinIO stores recording artifacts.

Make the next room yours.

Open the lobby, create a room, and send a link that still respects your infrastructure.

Open lobby