A Flask web app where you @mention AI agents into a live group chat.
Local models via Ollama · cloud AI on demand · Streaming debates · Obsidian memory · Add unlimited agents
Imagine a group chat where everyone at the table is an AI — each with a different personality, model, and reasoning style. You type a message, mention the agents you want, and they all respond. You can spark a structured debate, run a free-form group discussion via live streaming, or pull in Claude, Codex, or Gemini as cloud advisors.
- @mention routing — only the agents you tag reply
- Debate mode — structured 3-round argument with a final summary
- Free Talk — agents stream a live discussion on any topic via SSE
- Meeting templates — Code Review, Product Debate, Research, and Planning starter rooms
- Memory — save meeting notes directly to an Obsidian vault
- Searchable memory — find saved Markdown notes from the room UI
- Optional semantic memory — use embeddings and TurboVec to find related notes by meaning
- Transcript export — download the current meeting as a Markdown file
- Structured deliveries — turn a meeting into PR descriptions, issue drafts, plans, release notes, and review summaries
- Meeting history — search the current room and jump back to earlier messages
- Project context — load a local repo/folder so agents can review and plan with codebase context
- Cloud agent commands — Claude, Codex/OpenAI, and Gemini/Google can join on demand
All local agents run any Ollama-compatible model — swap by editing the "model" field in agents.py. Defaults are chosen to run under 8GB VRAM.
| Agent | Default Model | VRAM | Personality |
|---|---|---|---|
@mistral |
mistral |
~4 GB | Sharp analytical thinker |
@phi3 |
phi3 |
~2 GB | Creative lateral thinker |
@gemma2 |
gemma2:2b |
~1.5 GB | Balanced careful summarizer |
@deepseek |
deepseek-r1:7b |
~4.7 GB | Deep step-by-step reasoner |
@claude |
claude-sonnet-4-6 |
API | Collaborative nuanced advisor |
@codex |
OPENAI_MODEL (gpt-4.1-mini default) |
API | Coding and product advisor |
@gemini / @google |
GEMINI_MODEL (gemini-2.5-flash default) |
API | Research and planning advisor |
Swap a model: open
agents.py→ change the"model"value to anything fromollama list.
The AGENTS dict in agents.py is the only place you need to touch. You can add as many models as your hardware can handle — any model in ollama list works.
Step 1 — pull the model
ollama pull llama3
ollama pull qwen2:7b
ollama pull codellama
# or any model from https://ollama.com/libraryStep 2 — add an entry to agents.py
"llama3": {
"model": "llama3", # must match exactly what ollama list shows
"name": "Llama3", # display name in the UI
"color": "#E8A838", # any hex color for the chat bubble
"personality": """You are Llama3, a well-rounded and helpful thinker.
You are direct, practical, and friendly. Keep responses under 150 words
unless asked for detail. You are in a group meeting with other AI agents."""
},Step 3 — restart the app. Your new agent shows up in the agents bar automatically and is @mentionable by the key name (e.g. @llama3).
Hardware guidance
VRAM What runs comfortably 6–8 GB 2–3 agents simultaneously (e.g. Mistral + Phi3 + Gemma2) 12–16 GB 4–5 agents (full default set + 1–2 extras) 24 GB+ 6+ agents, larger 13B+ models Agents load on-demand per message — you're not running them all in parallel unless using
@allor@debate.
Agent Meeting Room is meant to feel like your own digital table, not a fixed demo. Open Customize to tune the room without changing code:
| Customization | Behavior |
|---|---|
| Agent display names | Rename agents in the UI without changing the @mention key |
| Agent avatars | Choose an image/logo URL or use the generated initials fallback |
| Agent accent colors | Pick each agent's chip, name, and message highlight color |
| Persona cards | Edit role, tone, expertise, and meeting behavior from a simple form |
| Saved presets | Save and load teams such as Code Review, Product Debate, Research, or Planning |
| Meeting templates | Apply Code Review, Product Debate, Research, or Planning templates with starter prompts |
| Room identity | Set an optional room title, purpose, and logo for demos or recurring meetings |
| Free Talk duration | Choose short or long discussions, from quick 5-minute syncs to longer 30-minute sessions |
| TTS voices | Let browser speech synthesis read agent replies, with optional voice name hints per agent |
Customizations are stored locally in agent_profiles.json, which is ignored by Git so each room can keep its own private setup.
After a meeting, click Structured Delivery to generate a Markdown draft from the current conversation. Built-in formats include Code Review Summary, Product Decision Memo, Research Brief, Research Action Brief, Implementation Plan, Bug Report, Release Notes Draft, GitHub Issue Draft, and Pull Request Description.
Each draft can be copied or downloaded, so the room can move from discussion to a practical artifact without needing another tool.
The Research Action Brief is built for turning large research sessions into something usable: the strongest evidence, the sellable asset it should become, approval gates, risks, and the next 7-day execution step.
The Meeting History panel gives the current room a searchable timeline with message counts, participant counts, and quick jump links back to earlier user or agent messages. The UI restores the server-side in-memory history on reload, so active desktop sessions feel less fragile.
Click Project Context and enter a local folder path to load a concise codebase summary into the room. Agent Meeting Room indexes useful text files, skips heavy folders such as .git, node_modules, venv, dist, and build, then adds the project summary to future agent prompts.
This is useful for code review meetings, implementation planning, release planning, and project improvement debates without pasting files manually.
Keyword memory search works out of the box. For deeper retrieval, Agent Meeting Room also has an optional semantic memory path that indexes saved notes with embeddings and TurboVec.
To try it:
ollama pull nomic-embed-text
pip install numpy turbovecThen set:
SEMANTIC_MEMORY_ENABLED=true
SEMANTIC_MEMORY_MODEL=nomic-embed-textWhen available, the Search Memory panel can switch from Keyword to Semantic memory. If TurboVec, NumPy, or the embedding model is missing, the app keeps working and explains that semantic search is unavailable.
- Go to Releases
- Download
AgentMeetingRoom.exe - Double-click — browser opens automatically
The repo includes AgentMeetingRoom_Setup.iss for Inno Setup if you want a full installer with desktop and Start Menu shortcuts.
- Run
build.batto createdist/AgentMeetingRoom.exe - Open
AgentMeetingRoom_Setup.isswith Inno Setup 6 - Build the setup package — output is written to
dist/
Prerequisite for both: Ollama must be installed and at least one model pulled.
ollama pull mistral
The repo also includes a Tauri desktop build that bundles the Flask backend sidecar and opens the app in a native WebView window:
npm run desktop:tauriThis requires Node.js, Rust/Cargo, Python, and the Visual Studio C++ Build Tools.
There is also a lighter Pake experiment that wraps an already-running local Flask URL:
npm install
npm run desktop:pake:msiSee docs/PAKE_DESKTOP.md for details.
See Quick Start below.
Ollama runs the local AI models. Without it, local agents won't respond.
| Platform | Download |
|---|---|
| Windows | ollama.com/download/windows |
| macOS | ollama.com/download/mac |
| Linux | curl -fsSL https://ollama.com/install.sh | sh |
After installing, pull at least one model:
ollama pull mistral # ~4 GB — recommended starting point
ollama pull phi3 # ~2 GB — lightweight
ollama pull gemma2:2b # ~1.5 GB — very lightweight
ollama pull deepseek-r1:7b # ~4.7 GB — deep reasoningOllama must be running before you start Agent Meeting Room.
It starts automatically on Windows/macOS after install. On Linux:ollama serve
git clone https://github.com/GhravenLabs/Agent-Meeting-Room
cd Agent-Meeting-Room
pip install -r requirements.txtRequires Python 3.11+. Check with python --version.
cp .env.example .envOpen .env and set:
| Variable | Required? | What it does |
|---|---|---|
ANTHROPIC_API_KEY |
Optional | Enables @claude — get one at console.anthropic.com |
OPENAI_API_KEY |
Optional | Enables @codex |
OPENAI_MODEL |
Optional | Overrides the @codex model, default gpt-4.1-mini |
GEMINI_API_KEY / GOOGLE_API_KEY |
Optional | Enables @gemini and @google |
GEMINI_MODEL |
Optional | Overrides the Gemini model, default gemini-2.5-flash |
MEMORY_BACKEND |
Optional | local (default), obsidian, or none |
OBSIDIAN_VAULT_PATH |
Optional | Only if MEMORY_BACKEND=obsidian |
SEMANTIC_MEMORY_ENABLED |
Optional | Enables TurboVec-backed semantic note search |
SEMANTIC_MEMORY_MODEL |
Optional | Ollama embedding model, default nomic-embed-text |
Memory is optional. By default it saves notes to ./meeting_notes/ next to app.py — no Obsidian needed.
python app.py
# Windows: double-click start.batThe startup log tells you exactly what's working:
==================================================
Agent Meeting Room
==================================================
✓ Ollama running (4 model(s) available)
· mistral
· phi3
· gemma2:2b
· deepseek-r1:7b
✓ Memory: local folder (./meeting_notes)
.. Claude API: no key set (@claude will not respond)
Add ANTHROPIC_API_KEY to .env for @claude
.. Codex API: no key set (@codex will not respond)
Add OPENAI_API_KEY to .env for @codex
.. Gemini API: no key set (@gemini will not respond)
Add GEMINI_API_KEY or GOOGLE_API_KEY to .env for @gemini
==================================================
Open: http://localhost:5000
==================================================
Run the built-in test suite with Python's standard unittest runner:
python -m unittest discover -s tests
# Windows: double-click test.batThe tests cover customization persistence, Flask route validation, Free Talk duration clamping, and memory note filename handling.
| What you type | What happens |
|---|---|
@mistral explain quantum computing |
Only Mistral replies |
@phi3 @gemma2 brainstorm ideas |
Phi3 and Gemma2 reply |
@all what should I build next? |
All local agents reply |
@claude review this plan |
Claude API responds |
@codex make an implementation plan |
Codex/OpenAI responds |
@gemini compare these options |
Gemini/Google responds |
@debate is AI good or bad? |
3-round structured debate |
| (no mention) | All local agents reply |
For Free Talk, click the Free Talk button → give a topic → agents discuss live in real time.
agent-meeting-room/
├── app.py Flask routes and SSE streaming
├── agents.py Agent definitions, Ollama + cloud API calls, debate logic
├── memory.py Obsidian vault integration
├── templates/
│ └── index.html Single-page frontend (Vanilla JS + SSE)
├── start.bat Windows one-click launcher
├── .env.example Environment variable template
└── requirements.txt
| Requirement | Required? | Notes |
|---|---|---|
| Python 3.11+ | ✅ Required | python.org |
| Ollama | ✅ Required | For local agents — must be running |
| Cloud API keys | Optional | Only for @claude, @codex, @gemini, and @google |
| Obsidian | Optional | Only if you want Obsidian memory — not needed |
Backend: Python · Flask · Server-Sent Events
Local AI: Ollama (Mistral · Phi3 · Gemma2 · DeepSeek)
Cloud AI: Anthropic Claude API · OpenAI/Codex · Google Gemini
Frontend: Vanilla JS · SSE streaming
Memory: Pluggable — local folder (default) · Obsidian vault (optional) · or disabled
I use AI-assisted development tools while building and maintaining this project. All code, design decisions, testing, commits, and releases are reviewed and shipped by me as the repository owner; AI tools are not listed as project contributors.
MIT — see LICENSE
See CONTRIBUTING.md — adding a new agent takes about 5 lines.
See CHANGELOG.md for release history.

