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

Self-hosted browser meetings with waiting rooms, recordings, and host authority built on LiveKit.
Paste a room code or shared link. Guests knock first, then the host admits them.
Guests get one link. Hosts get entry, media, recording, and room authority.

Huddle treats meeting authority as visible software: guests wait, hosts decide, and secrets stay server-side.
Shared links can stay simple while the host decides who crosses the threshold.
JWT grants, mute actions, removal, and recording all pass through the API.
LiveKit Egress writes room-composite files to MinIO, then Huddle brokers the download.
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.
Next.js handles the lobby, pre-join checks, call controls, guest knock, and recordings.
NestJS mints tokens, owns room authority, validates host actions, and receives webhooks.
The SFU carries audio, video, screen share, chat, TURN, and room-composite egress.
Postgres keeps rooms, Redis coordinates state, and MinIO stores recording artifacts.
Open the lobby, create a room, and send a link that still respects your infrastructure.