Calls
1 2 3 4 5 6 | |
Calls#
Every room is call-capable. Click the phone (audio) or camera (video) icon in the chat header to start one. Other room members get a ringing notification with Answer / Reject buttons.
Stack#
ScaiWave uses LiveKit as the SFU. Each call gets its own room on the LiveKit server, with a one-to-one mapping between the ScaiWave room and the LiveKit call session. Tokens are short-lived; ScaiWave mints fresh ones per join.
Features#
- Audio and video with adaptive bitrate.
- Screen share — any participant can share at any time. The client picks a single source (display, window, tab) per share session.
- Picture-in-Picture (PiP) — pop the call into a floating window that stays on top while you keep working in ScaiWave. Chromium-only (uses the Document Picture-in-Picture API); falls back gracefully elsewhere.
- Recording — admins can start a recording on any active call.
Recordings land in MinIO/S3 and show up as media attachments in the
room. Start with
POST /v1/calls/{call_id}/recording/start. - Live transcription — recordings are transcribed asynchronously via ScaiGrid's audio model and posted as a transcript message in the room.
Permissions#
- Start a call: every room member.
- Start a recording: requires
power_level >= 50(default). - End a call for everyone: the call initiator or any member with
power_level >= 50.
Calls and federation#
Calls work across federated rooms — the LiveKit server is your local one, and federated peers receive call invites the same way they receive messages. Token minting happens locally; the foreign participant gets a LiveKit token signed by your server.
AI voice calls#
When you start a call in a room with an AI participant, the call goes active immediately (no ringing) and a voice bot worker joins LiveKit as the AI. This gives you a live voice conversation with the AI — full tool calling, context from the chat history, and on/off-the-record control.
See Voice mode for the full architecture.
Where to go next#
- Tutorial: Talk to your AI
- Concepts: Voice mode
- API: Calls
- API: Voice