Review + approve
Every incoming phone goes through a review queue first. You see a thumbnail, the UA, and three actions: Approve, Reject, Kick. Approved phones enter the active subscription pool the display mode draws from. Rejected phones see "Rejected by host" on their screen and their stream is closed server-side.
Display modes
Floating nodes: up to 16 audience cameras as floating tiles with subtle physics. Highlight one: a single audience feed full-screen, cycled on a configurable timer. Scan random: jump to a random approved phone every N seconds.
Stays connected
The LiveKit room is owned by the active track, not the individual clip — so switching between FanCam clips keeps every approved phone live with no re-subscribe and no video blip. The room (and its approval state) ends only when the last FanCam clip leaves the track, you switch tracks, or the rig goes offline.
Scaling
Built on LiveKit Cloud (managed SFU). 5 GB egress / month free, then $0.004 per participant-minute — the 5-token-per-MB rate covers it comfortably. Each room currently pins to a single SFU worker; thousands of phones can connect, the renderer just subscribes selectively.