Meetings & live rooms
Voice, video, screen sharing and slides for calls, AMAs and community events, with broadcast rooms for large audiences.
Meetings are the second foundation module. They cover one-to-one and group calls, scheduled community meetings, and broadcast rooms for large audiences. Room lifecycle, scheduling, permissions and invitations run in the operator's deployment on the meeting-service component; media flows through the shared real-time media service.
Calls, scheduled meetings, screen sharing and recording run today in the reference deployment. Shared slides and broadcast rooms with large-room mode are in developer preview.
Capabilities
| Capability | Status | Notes |
|---|---|---|
| One-to-one voice and video calls | Available | Ringing, accept, decline, cancel, busy and timeout states |
| Group calls and meeting rooms | Available | Invitations, hand raise, host transfer, member management |
| Scheduled community calls | Available | Booking and start reminders |
| Screen sharing | Available | Controlled by screenShare |
| Recording | Available | Off by default; starts only after the room's consent round |
| Slides | Preview | Documents shared to the room and presented in sync |
| Broadcast rooms | Preview | Stage on real-time media; large audiences through the streaming edge |
Configuration
{
"modules": {
"meetings": {
"video": true,
"screenShare": true,
"slides": true,
"recording": false,
"maxParticipants": 50,
"broadcast": { "enabled": true, "maxAudience": 2000 }
}
}
}Prop
Type
Interactive rooms and broadcast rooms
An interactive room puts every participant on real-time media, up to maxParticipants. Anyone with publishing rights can speak, share video or share a screen.
A broadcast room separates the stage from the audience. The stage — hosts, co-moderators and invited speakers — holds publishing credentials. Everyone else is a listener.
- With
broadcast.maxAudienceup to 500, listeners stay on real-time media. - Above 500 the room runs in large-room mode: the stage stays on real-time media and listeners receive the stage mix from a low-latency streaming edge. Validation reports this as
meetings.large-room(info).
The delivery mode is fixed when the room opens and does not change afterwards. A listener's playback address stays valid briefly after the scheduled end so the final segments can drain. Raising a hand signals the host; it never grants publishing rights by itself — the host promotes a listener to the stage.
Large-room mode has been built and exercised end to end, including both mobile listener clients, in an isolated environment. It is not yet part of the reference deployment, which is why broadcast rooms are marked preview.
Joining a room
- The app requests to join through the meeting service.
- The meeting service checks membership, room PIN if any, blocklists and capacity, then returns a short-lived credential scoped to that room and role.
- Stage members connect to real-time media with the credential; listeners in large-room mode receive a signed playback address instead.
- Presence and roster updates are coalesced, so a member entering a large room does not trigger one notification per attendee.
Recording
Recording is off unless recording is true. When a host starts a recording, the room runs a consent round: depending on the room's policy, participants either receive a notice or must agree before recording begins. If the consent round changes while a request is in flight, the request is rejected rather than applied to the wrong round. Finished recordings are stored in the operator's object storage and delivered through signed addresses.
Events
Preview webhook events.
| Event | Fired when | Key fields |
|---|---|---|
meetings.room.scheduled | A meeting is booked | roomId, hostId, startsAt |
meetings.room.started | The first participant connects | roomId, mode |
meetings.room.ended | The room closes | roomId, durationSeconds |
meetings.participant.joined | A participant is admitted | roomId, memberId, role |
meetings.participant.left | A participant leaves | roomId, memberId |
meetings.recording.started | Recording begins after consent | roomId, recordingId |
meetings.recording.ready | A recording is available | roomId, recordingId, durationSeconds |
Privacy scope
Room access is authorised by the community server; media transport is encrypted in transit.
Meetings are not end-to-end encrypted. Chat encryption does not extend to meetings. The media service receives room-scoped credentials and media only — never the member directory or chat history.
Shared services and metering
| Shared service | Unit | Measures |
|---|---|---|
| Real-time media | participant-minutes | Minutes each participant is connected to real-time media |
| Real-time media | broadcast-viewer-minutes | Minutes each listener plays a large-room stream |
Limits
| Field | Bound |
|---|---|
maxParticipants | 2 to 500 |
broadcast.maxAudience | 1 to 10,000 |
| Large-room threshold | Audiences above 500 |
Chat & communities
Conversations, groups and tribes, with members, roles and join approvals. The foundation every Symorva community is built on.
AI & creator studio
An AI assistant, image generation, AI short dramas and product ad creation inside the community, with explicit, revocable member grants for conversation access.