Multi-Agent Room
A Multi-Agent Room is a collaborative chat space where three AI agents work together to analyse a topic you bring to them:
| Agent | Role |
|---|---|
| Facilitator | Opens the discussion, structures the problem, asks clarifying questions |
| Analyst | Provides in-depth analysis, data points, and counterarguments |
| Summarizer | Synthesises the conversation into conclusions and actionable next steps |
You post a topic or question. The agents respond in sequence, each building on the previous agent's output. The conversation is real-time via WebSocket — responses appear as they arrive.
How It Works
Under the hood, an Agent Room is a Channel (type='meeting_agents') backed by three configured AgentSkills. This means:
- It uses the same real-time channel infrastructure as the Channels feature
- Each agent's response is stored as a channel message (persistent, searchable)
- The room can be joined by multiple human participants who can read and contribute
- You can configure each agent with different system prompts, knowledge bases, and LLM models
Step 1 — Create the Agent Skills
Before setting up an Agent Room plugin, you need three AgentSkills — one for each role.
- Go to Workspace → Skills → + New Skill.
- Create a Facilitator skill:
- System prompt:
You are a meeting facilitator. Your job is to structure the discussion, surface key questions, and keep the conversation focused. Be concise. Ask one targeted clarifying question if needed. - Attach any knowledge bases relevant to your team's work
- System prompt:
- Create an Analyst skill:
- System prompt:
You are a strategic analyst. Given the facilitator's framing, provide a thorough analysis: key findings, risks, data points, and alternative perspectives. Be specific and factual.
- System prompt:
- Create a Summarizer skill:
- System prompt:
You are an executive summarizer. Given the facilitator's framing and analyst's findings, produce: (1) a 2-sentence summary, (2) 3-5 specific action items with owners. Be concrete and actionable.
- System prompt:
- Copy each skill's ID (shown in the URL:
/agent-builder/skills/{id}).
Step 2 — Add the Agent Room Plugin
- Admin Panel → Settings → Meetings → + Add Plugin → agents
- Fill in:
| Field | Value |
|---|---|
| Name | e.g. Strategy Agent Room |
| Facilitator Skill ID | UUID from Step 1 |
| Analyst Skill ID | UUID from Step 1 |
| Summarizer Skill ID | UUID from Step 1 |
- Click Save.
Step 3 — Start a Room
- Go to Meetings in the sidebar.
- Click + New Meeting → select your Agent Room plugin.
- Enter a title (e.g. "Q3 Product Strategy Discussion").
- Click Start.
You are redirected to the agent room page (/meetings/agents/{room_id}).
Using the Agent Room
The room looks like a chat interface:
┌──────────────────────────────────────────┐
│ Strategy Agent Room │
│ Facilitator · Analyst · Summarizer │
├──────────────────────────────────────────┤
│ You: Should we expand into APAC in Q4? │
│ │
│ Facilitator: Great question. Before │
│ diving in, let's clarify: are we │
│ looking at APAC broadly or specific │
│ markets like Japan and Singapore? │
│ │
│ Analyst: The APAC expansion opportunity │
│ is significant — the region accounts │
│ for 45% of global SaaS growth... │
│ │
│ Summarizer: Summary: APAC expansion │
│ in Q4 is viable with focused entry in │
│ Singapore. Action items: │
│ - Alice: Market sizing by Sept 15 │
│ - Bob: Legal entity research by Oct 1 │
├──────────────────────────────────────────┤
│ Post a topic for the agents to discuss… │
└──────────────────────────────────────────┘
Posting a message triggers the full Facilitator → Analyst → Summarizer chain. Each response appears as it completes (real-time streaming via WebSocket).
Multiple humans can join the same room — all see the same conversation. Additional humans can post follow-up questions and the agent chain will re-run.
Viewing History
Navigate to Meetings → room → Open Agent Room, or directly to /meetings/agents/{room_id}. The full message history loads on open.
All messages are stored in the backing channel, so they survive page refreshes and server restarts.
Generating Meeting Notes
Agent Rooms are text-only — there's no audio recording to feed into the usual Meeting Notes upload flow. Instead, the room page has its own Generate Notes button in the header:
- Have a conversation with the agent chain (post at least one topic).
- Pick a model and click Generate Notes.
- The full conversation (every Facilitator/Analyst/Summarizer exchange) is assembled into a transcript client-side and sent to
POST /api/v1/meetings/notes/from-transcript, which summarizes it the same way an uploaded recording would — skipping Whisper entirely since it's already text. - You're taken to the resulting note, and it also appears in Meetings → Notes like any other.
This is genuinely useful given the Summarizer agent's whole job is already producing a synthesis — "Generate Notes" turns that into a persisted, searchable record instead of something that only lives in the room's chat history.
Tips for Better Results
Provide context-rich topics — the more specific your initial message, the more useful the agent chain output:
# Too vague:
Should we expand?
# Better:
We're considering expanding our B2B SaaS product into the APAC region (specifically
Japan and Singapore) in Q4 2026. Our current ARR is $2M, team size is 12. Should we
prioritize Japan or Singapore first, and what are the key risks?
Use knowledge bases — attach relevant documents (market research, financial models, past meeting notes) to the Analyst skill. The Analyst will cite them in its response.
Customize the agent chain — each skill supports full system prompt customization, knowledge base injection, and LLM model selection. Swap a skill's model to claude-opus-4-8 for deeper analysis on complex topics.
Agent Room vs Channels
| Agent Room | Channel | |
|---|---|---|
| Participants | Humans + 3 AI agents | Humans only (or AI via tool calls) |
| Message flow | Sequential agent chain per human message | Free-form |
| Purpose | Structured analysis of a topic | Team communication |
| Persistence | Yes (channel messages) | Yes |
| Real-time | Yes (WebSocket) | Yes (WebSocket) |
Agent Rooms are built on top of Channels — you can access the raw channel via session.channel_id if you need direct channel API access.
Config Schema Reference
| Key | Type | Required | Description |
|---|---|---|---|
facilitator_skill_id | string | Yes | AgentSkill UUID for the Facilitator |
analyst_skill_id | string | Yes | AgentSkill UUID for the Analyst |
summarizer_skill_id | string | Yes | AgentSkill UUID for the Summarizer |
Troubleshooting
"Failed to create agent room channel" error → The Channel creation failed, usually due to a permissions issue. Verify that the logged-in user has channel creation permissions in Admin Panel → Settings → Permissions.
Agents don't respond after posting a message → The agent chain runs asynchronously. If there's no response after 30 seconds, check server logs for errors. Common causes: LLM provider not configured, or Ollama/your model provider is not running. A missing or invalid skill ID is caught earlier now — see below.
"Facilitator/Analyst/Summarizer Skill ID does not match any existing AgentSkill" when saving the plugin
→ The three Skill IDs are validated against real AgentSkill records at Save time, not just checked for presence. This catches a typo'd or since-deleted skill immediately, instead of it silently failing later — previously a bad ID here only surfaced as [Agent error: ...] posted directly into a live room mid-conversation. Copy the correct ID from Workspace → Skills → (skill) → URL.
Wrong skill responding (e.g. Facilitator sounds like the Analyst) → Skill IDs may have been swapped (all three are individually valid, so Save won't catch this). Verify the IDs in Admin Panel → Settings → Meetings against the skill names in Workspace → Skills.
Messages appear in wrong order → Timestamps are based on when each agent's response completes. In a slow LLM environment, responses may arrive out of order. This is cosmetic only — the chain always executes Facilitator → Analyst → Summarizer in sequence.