SymorvaDocs
Modules

Meetings & live rooms

Voice, video, screen sharing and slides for calls, AMAs and community events, with broadcast rooms for large audiences.

Available· Runs today in the reference deployment

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

CapabilityStatusNotes
One-to-one voice and video callsAvailableRinging, accept, decline, cancel, busy and timeout states
Group calls and meeting roomsAvailableInvitations, hand raise, host transfer, member management
Scheduled community callsAvailableBooking and start reminders
Screen sharingAvailableControlled by screenShare
RecordingAvailableOff by default; starts only after the room's consent round
SlidesPreviewDocuments shared to the room and presented in sync
Broadcast roomsPreviewStage on real-time media; large audiences through the streaming edge

Configuration

symorva.config.json (excerpt)
{
  "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.maxAudience up 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

  1. The app requests to join through the meeting service.
  2. The meeting service checks membership, room PIN if any, blocklists and capacity, then returns a short-lived credential scoped to that room and role.
  3. Stage members connect to real-time media with the credential; listeners in large-room mode receive a signed playback address instead.
  4. 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.

EventFired whenKey fields
meetings.room.scheduledA meeting is bookedroomId, hostId, startsAt
meetings.room.startedThe first participant connectsroomId, mode
meetings.room.endedThe room closesroomId, durationSeconds
meetings.participant.joinedA participant is admittedroomId, memberId, role
meetings.participant.leftA participant leavesroomId, memberId
meetings.recording.startedRecording begins after consentroomId, recordingId
meetings.recording.readyA recording is availableroomId, 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 serviceUnitMeasures
Real-time mediaparticipant-minutesMinutes each participant is connected to real-time media
Real-time mediabroadcast-viewer-minutesMinutes each listener plays a large-room stream

Limits

FieldBound
maxParticipants2 to 500
broadcast.maxAudience1 to 10,000
Large-room thresholdAudiences above 500

On this page