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. 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, messaging, DMs, availability & invitesPersistent 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.
Project-wide availability signal
Coming Soon
Let users broadcast that they're open to connect right now — scoped
to a project context, with a configurable TTL and optional profile
hints. Other users in the same project can list who's available and
reach out via invite. Updates are pushed over WebSocket as
availabilityUpdate events (added / changed / removed) —
no polling. Optional role and attributes
fields feed pluggable matchmaking strategies (see feature 19a).