Skip to main content

Meetings

Hrida.ai includes a built-in AI Meeting Suite that brings video conferencing, automated meeting notes, scheduling, and multi-agent collaboration together in one platform. Each capability is delivered as a plugin — you configure exactly what you need via the admin panel without touching configuration files.

Feature flag

The Meeting Suite is off by default. Enable it with ENABLE_MEETINGS=true in your .env or via Admin Panel → Settings → Meetings.


Four Plugins in One Suite​

PluginWhat it doesProvider options
Video ConferencingSelf-hosted or cloud video rooms with SSO via JWTJitsi Meet, Zoom
Meeting NotesUpload recording audio → Whisper transcription → Ollama AI summary + action itemsWhisper (local or containerized)
SchedulingSchedules meetings that sync directly with the built-in CalendarBuilt-in Calendar (no external service)
Multi-Agent RoomA chat room where Facilitator, Analyst, and Summarizer agents collaborate on any topicExisting hrida-ai-studio AgentSkills

All four plugins share a single Meeting Session record that links the Jitsi room, notes, calendar event, and agent channel together.


Architecture​

Admin Panel → Meetings → Plugins
↓ configure one or more plugins
↓
POST /api/v1/meetings/sessions/ ← create a session via any plugin
↓
MeetingSession (DB)
├── provider_session_id (Jitsi room / Zoom ID)
├── channel_id (agent room only)
├── calendar_event_id (Scheduling creates a CalendarEvent directly)
└── recording_url (set when Zoom webhook fires)

Inbound webhooks:
POST /api/v1/webhooks/meetings/{plugin_id}
← Zoom meeting.ended, etc.

Quick Start​

New to the Meeting Suite? The Getting Started guide walks you through enabling the feature, adding your first plugin, and starting a meeting in under 5 minutes.


Adding Your First Plugin​

  1. Navigate to Admin Panel → Settings → Meetings.
  2. Click + Add Plugin and select a type from the dropdown.
  3. Fill in the config fields (API keys, secrets, domain). Required fields are marked with *.
  4. Click Save.
  5. The Meeting Suite immediately appears in the sidebar under Meetings.

Once enabled, the Meetings icon appears in the sidebar. The suite has three views:

ViewURLPurpose
Meetings/meetingsDashboard — list sessions, start a new meeting
Schedule/meetings/scheduleBook a meeting synced with your built-in Calendar
Notes/meetings/notesAll meeting transcriptions and AI summaries

Clicking a session row in the dashboard navigates to the Meeting Room (/meetings/room/{id}) which shows the video iframe and a collapsible notes panel side-by-side.


Real-Time Updates​

All four plugins push state changes to the admin panel and meeting room page via WebSocket:

Socket eventWhen firedUI effect
events:meeting_notesNew notes saved after transcriptionNotes panel auto-updates
events:meeting_sessionSession status changes (active → ended)Room header updates status badge
events:channelAgent room: agent posts a responseMessage appears in chat

Docker Compose Overlay​

The Meeting Suite ships as a separate compose overlay so it doesn't affect deployments that don't need it.

docker compose \
  -f docker-compose.yaml \
  -f docker-compose.meetings.yaml \
  up -d

The overlay adds Jitsi Meet (web, prosody, jicofo, jvb), a Whisper ASR API container, and an hrida-mcpo tool server. All services join the existing openhridaai-network and share postgres/redis.

See Video Conferencing for the full Jitsi setup walkthrough.


Agent Integration​

There are two ways for an agent to interact with meetings, depending on how much access it needs.

Option A — create_meeting built-in tool (no extra setup)​

Grant the create_meeting tool to any Agent Builder agent node or Skill. It can create a session via any enabled plugin and return the join URL — that's it. No Docker overlay, no tool server config. See Starting a Meeting → From an agent for usage.

Option B — hrida-mcpo-meetings (full API access)​

For broader capabilities — listing sessions, joining existing rooms, reading notes, posting to a multi-agent room — deploy hrida-mcpo-meetings (port 8094) from the Docker Compose overlay.

Not an auto-generated wrapper

hrida-mcpo (the proxy this overlay uses) only wraps real MCP servers (stdio/sse/streamable-http) as OpenAPI — it has no mode that takes an arbitrary REST API's OpenAPI spec and turns it into MCP tools directly. hrida-mcpo-meetings is a hand-written stdio MCP server (scripts/meetings-agent/, config in hrida-mcpo/config.json/config.docker.json alongside hr-agent) that calls hrida-ai-studio's own /api/v1/meetings and /api/v1/meeting-configs REST endpoints and exposes a curated set of tools — not the entire API surface.

It authenticates as a single Meeting Manager service account (see scripts/meetings-agent/create_service_account.py) — meetings created through it are attributed to that account, not to whichever user is chatting. No admin promotion is required: list_meeting_plugins/list_meeting_types only need the features.meetings permission (on by default for every user), and session-management calls (create_meeting, list_my_meetings, etc.) are already scoped to whatever the service account itself created.

Add it as a tool server in Admin Panel → Settings → Tool Servers:

http://hrida-mcpo-meetings:8000/meetings-agent   (Docker internal)
http://localhost:8094/meetings-agent (host access)

Agents with this tool server attached can call:

  • list_meeting_types — which plugin types this deployment supports
  • list_meeting_plugins — configured, enabled plugins (each has a config_id needed to create a meeting)
  • create_meeting — start a session via any configured plugin
  • list_my_meetings / get_meeting — check the service account's own sessions
  • update_meeting — rename, reschedule, or change participants
  • join_meeting — get a fresh join token for an existing session
  • end_meeting / delete_meeting — close out or remove a session
Which option to use

Use create_meeting for the common case (an agent decides to start a meeting as part of a conversation, attributed to the real triggering user). Reach for hrida-mcpo-meetings when an agent needs to manage existing sessions or list available plugins — capabilities create_meeting deliberately doesn't expose — and you're fine with those actions running as the shared service account rather than the individual user.


API Reference​

EndpointDescription
GET /api/v1/meeting-configs/typesList supported plugin types + config schemas
GET /api/v1/meeting-configs/List configured plugins
POST /api/v1/meeting-configs/Create plugin (admin)
PATCH /api/v1/meeting-configs/{id}Update plugin config (admin)
DELETE /api/v1/meeting-configs/{id}Remove plugin (admin)
POST /api/v1/meetings/sessions/Create a meeting session
GET /api/v1/meetings/sessions/List user's sessions
GET /api/v1/meetings/sessions/{id}Get a session (creator, participant, or admin only)
POST /api/v1/meetings/sessions/{id}/joinGet fresh join token (creator, participant, or admin only)
POST /api/v1/meetings/sessions/{id}/endMark a session as ended (creator or admin only)
POST /api/v1/meetings/notes/Upload audio → transcribe → summarize
GET /api/v1/meetings/notes/List your own meeting notes
GET /api/v1/meetings/notes/session/{id}List notes for a session (creator, participant, or admin only)
POST /api/v1/meetings/agents/{id}/messagePost to agent room (creator, participant, or admin only)
GET /api/v1/meetings/agents/{id}/historyAgent room message history (creator, participant, or admin only)
POST /api/v1/webhooks/meetings/{plugin_id}Inbound webhook from provider (signed)

Access Control​

A meeting session is visible and joinable only by:

  • The creator — the user who started the meeting
  • Participants — user IDs/emails included when the session was created
  • Admins — always have full access to every session, for support and moderation

This applies consistently across the session itself, its notes/transcripts, its join token, and (for Multi-Agent Rooms) its message history — knowing a session ID alone is never enough to access someone else's meeting.

Inbound provider webhooks (Zoom) are authenticated separately via HMAC signature verification using the plugin's configured webhook_secret — see the plugin's setup guide for the exact header and signing scheme. A webhook with no configured secret is rejected, not silently accepted. Scheduling has no inbound webhook — meetings are created directly against the built-in Calendar.


Environment Variables​

VariableDefaultDescription
ENABLE_MEETINGSfalseMaster switch for the meeting suite
ENABLE_MEETING_VIDEOtrueEnable video conferencing plugin
ENABLE_MEETING_NOTEStrueEnable Whisper + Ollama notes plugin
ENABLE_MEETING_SCHEDULEtrueEnable the built-in Calendar scheduling plugin
ENABLE_MEETING_AGENTStrueEnable multi-agent room plugin
WHISPER_API_URL(empty)External Whisper ASR endpoint (set by Docker overlay)

Hrida.ai is proprietary software of Zlabs Innovation. See the license for terms. © 2026 Zlabs Innovation.