Just The Basics
Working in minutesZero-config WebRTC setup
Drop in one script tag (or one ESM import) and call init().
STUN/TURN servers, ICE negotiation, signaling — all handled invisibly.
Your app never touches a socket directly.
Anonymous video conferences
Anyone can join with just a name and a room code — no accounts, no passwords, no OAuth flows. Perfect for lightweight embed scenarios and quick prototypes.
Go Live / stop streaming
Entering a room puts you in PRE-LIVE — camera preview is available
but no WebRTC connection is open yet. Call startLive() when
the user is ready to broadcast. The two-step design lets you build
waiting rooms, lobby screens, and "ready" confirmations naturally.
Camera & microphone toggles
One-line on/off for camera and mic. The SDK distinguishes between off (hardware released) and muted (track silenced but still capturing), giving your UI the full signal it needs for accurate indicators.
Multi-user concurrent screensharing
Any member — not just the host — can share their screen at the same time. Each screenshare arrives as its own independent stream tile, so multiple screens can be visible simultaneously.
Rooms & Member Awareness
Real-time state, tiles, presenceLobby / PRE-LIVE staging
Members enter a staging area with camera preview before WebRTC connects.
Build waiting rooms, "knock to enter" flows, or device-check screens —
all without any streaming cost until startLive() is called.
Real-time member state
One unified event carries every member's full state — live status, camera, mic, and screenshare — for both local and remote members. Drive all your indicators, placeholders, and visibility from a single event handler. No polling, no duplicated logic.
Automatic tile lifecycle
Register a tile element once and the SDK handles everything: stream attachment, member exit cleanup, screenshare end, room leave, and kick. Tiles are auto-removed from the DOM — your code never needs a teardown path for remote media.
Member directory
Fetch display names and statuses for everyone in the room. Use this to populate a participants list, name labels on tiles, or a roster sidebar — with one async call after entering.
Network quality monitoring
AdvancedOpt-in per-connection quality scoring — good / fair / poor / lost — derived from RTT, jitter, packet loss, and freeze rate. Fires events when quality changes for you or for any remote member. Can auto-render a status bar on affected tiles with no extra code.
Host can remove members
AdvancedThe host can kick any member from the room via the VibeLive console. The SDK surfaces the event cleanly on the removed member's end so your app can show a message and clean up gracefully.
Sound effects on member join / exit
Play chimes, notification sounds, or custom audio cues when members
arrive or leave — just hook your own AudioContext into
the SDK's presence events.
Communication
Text chat, persistent messages, private DMsPersistent channel text chat
Send messages to the whole room — backed by the database, so history survives after the session ends. Fetch past messages by page and display them in chronological order.
Real-time message push
Incoming messages from other members arrive instantly over the SDK's WebSocket — no polling required. Register one handler and it fires for both channel-wide messages and private DMs addressed to you.
Private member-to-member DMs
Send and retrieve private messages between two members — scoped to their shared channel. Threads are persistent and paginated, separate from channel-wide chat.
Delete messages
Message authors can soft-delete their own messages. Room owners and admins can wipe the full channel history — room-wide messages, member DMs, or both — in a single call.
Security
Room codes, session integrityRoom codes — private by default
Every room gets a short, shareable code on creation. Only people with the code can enter. Share it however you like — link, QR code, email — and revoke access by rotating the code from your console.
Idle member cleanup & liveness checks
The server automatically removes members who go silent for too long (~5 minutes). Your app can intercept the liveness check to prompt the user and keep their session alive.
Configuration & Advanced Use
Room options, session limits, multi-room, device control, ReactRoom creation options
createRoom() accepts options that control anonymous entry,
session end behavior, and message-retention settings. Room-level settings
override project defaults; omit any option to inherit the project default.
Session duration control & countdown
Advanced
Cap a room's session at a fixed number of minutes with maxSessionMinutes,
or let your account plan's default limits apply. Two complementary APIs
give developers full visibility and control over the session lifecycle:
time_remaining_seconds on the room object lets you display a
“time left” badge the moment a user enters (before any warning fires);
the server-pushed kickWarning event delivers a precise
deadline timestamp shortly before the kick, enabling a smooth
per-second countdown with zero polling. The terminal kicked event
fires when the session actually ends — that's where you call exitRoom().
Independent multi-room instances
AdvancedRun multiple independent room connections on the same page simultaneously — each with its own state, event handlers, and tile set. Useful for monitoring dashboards, sidebars, and multi-feed layouts.
Device selection
AdvancedLet users choose which camera and microphone to use from all available devices — essential for multi-camera setups, external mics, and accessibility requirements.
React integration
Advanced
Use the SDK's event model cleanly inside React component lifecycle.
Subscribe in useEffect with cleanup, use useRef
for video elements instead of registerTile(), and push
state into React via useState.
Platform
Capacity & session limitsMember capacity & session limits by account type
Capacity and session length depend on the account plan.
Builder accounts support up to 12 concurrent live
members per room and up to 25 concurrent live members across all
rooms, with sessions that stay active for up to 24 hours without
reconnecting.
Starter accounts are limited to 4
live members per room and 4 concurrent live members across all
rooms.
Trial accounts have the strictest limits.
Within a plan's limits, members can freely join and leave the room.