# Meeting Room Multi-agent discussion framework — role-based AI agents debate problems and produce solutions. ## Install ```bash git clone meeting-room cd meeting-room pip install -e . # With dev dependencies (pytest, pytest-mock) pip install -e ".[dev]" # With web server dependencies (Phase 2) pip install -e ".[web]" ``` ## Quick Start ```bash # Initialize workspace (creates .meeting-room/ in current directory) meeting-room init # Run a discussion with default scenario meeting-room -s example-saas.md # Run and save result to sessions/ meeting-room -s scenarios/my-problem.md --save # Cross-LLM code review — point agents at a project meeting-room -s code-review.md -w /path/to/project # List available scenarios and roles meeting-room --list-scenarios meeting-room --list-roles ``` ## Workspace Structure ``` .meeting-room/ ├── config.yaml — override default config (roles, providers, tools) ├── scenarios/ — your .md scenario files │ └── example.md ├── sessions/ — saved discussion results (gitignored) └── .gitignore ``` ## Commands ```bash meeting-room init [path] # Create .meeting-room workspace meeting-room -s scenarios/my.md # Run discussion meeting-room -s scenarios/my.md --save # Run and save result meeting-room -s code-review.md -w /path # Code review on a project meeting-room --list-scenarios # Show available scenarios meeting-room --list-roles # Show roles and model bindings meeting-room -c /path/to/config.yaml -s ... # Custom config file meeting-room -w /path/to/project -s ... # Set workdir for file tools ``` ## Built-in Scenarios | Scenario | Description | |----------|-------------| | `example-saas.md` | General discussion: SaaS architecture with moderator/skeptic/idea_generator/analyst | | `code-review.md` | Cross-LLM code review with defender/attacker/security/moderator | ## Architecture (v2) ``` ┌──────────┐ events ┌───────────────┐ │ CLI │◄────────────│ DiscussionEngine │ │ (ANSI) │ │ (event-driven) │ └──────────┘ └───────┬───────┘ │ ┌────────────┼────────────┐ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ APIClient│ │ToolRegistry│ │EventEmitter│ └──────────┘ └──────────┘ └──────────┘ ``` - **DiscussionEngine** — orchestrates round-robin discussion, emits events (no print calls) - **APIClient** — class-based, multi-provider (OpenAI-compatible APIs) - **ToolRegistry** — class-based, pure Python (Windows compatible) - **EventEmitter** — synchronous pub/sub bus (Phase 2: AsyncEventBridge for WebSocket) - **Pydantic v2 models** — typed config, messages, sessions ## Configuration ### Config Search Order 1. `--config` CLI argument 2. `.meeting-room/config.yaml` (searched from CWD upward) 3. Built-in package defaults ### API Keys Set via environment variables: ```bash export MEETING_ROOM_ROUTERAI_API_KEY="sk-..." export MEETING_ROOM_ROUTERAI_BASE_URL="https://routerai.ru/api/v1" export MEETING_ROOM_OPENAI_API_KEY="sk-..." export MEETING_ROOM_ANTHROPIC_API_KEY="sk-ant-..." export MEETING_ROOM_DEEPSEEK_API_KEY="sk-..." ``` Or use `${ENV_VAR}` placeholders in config.yaml. ### Roles Each role binds to a provider + model + tool set: ```yaml roles: defender: name: "Defender" provider: anthropic # one LLM defends model: "claude-sonnet-4-6" tools: "readonly" attacker: name: "Attacker" provider: openai # another LLM attacks model: "gpt-4o" tools: "readonly" security: name: "Security" provider: deepseek # third LLM checks security model: "deepseek-chat" tools: "web" ``` ### Tool Sets | Set | Tools | |-----------|--------------------------------------------------------| | all/full | Everything (files + web + commands) | | files | read_file, list_files, search_in_files, write_file | | readonly | read_file, list_files, search_in_files | | web | web_search, web_fetch | | none | No tools, text only | | (list) | `["read_file", "web_search"]` — custom mix | ### Scenarios Markdown with YAML frontmatter: ```markdown --- name: "My Problem" participants: - moderator - skeptic - idea_generator - analyst max_rounds: 6 --- # The Problem Full Markdown description... ## Context - Budget: $50K - Team: 3 people ## Questions 1. What tech stack? 2. How to scale? ``` ## Roadmap - [x] **Phase 1: Core refactor** — Pydantic models, EventEmitter, class-based APIClient/ToolRegistry, DiscussionEngine, backward-compatible CLI - [ ] **Phase 2: Web server** — FastAPI + WebSocket + SSE, REST API, minimal HTML UI, `meeting-room serve` - [ ] **Phase 3: Interactivity** — Boss role, CSO injection, Setup Wizard, BrainstormEngine - [ ] **Phase 4: Artifacts** — LLM extraction → .tasks/.wiki, SessionArchive ## License MIT