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.
Per-tile private DM UI (zero-code)
One flag at room creation injects a complete, ready-made DM interface directly onto every remote camera tile — chat toggle, slide-out input, conversation history, live updates. No additional app code required.
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, multi-room, device control, ReactRoom creation options
createRoom() accepts options that control anonymous entry,
session end behavior, and the per-tile messaging UI. Room-level settings
override project defaults; omit any option to inherit the project default.
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 limitsUp to 12 members, up to 24-hour sessions
Rooms support up to 12 concurrent live members and stay active for up to 24 hours without reconnecting. Members can freely join and leave within that window.