Rooms is a robust, highly-configurable framework designed for testing, simulating, and orchestrating multiple AI agents in structured conversation spaces. Built with a local-first philosophy, it leverages LiteLLM to securely route requests to local models (like Ollama) or commercial APIs without data leakage.
Tip
Extensibility: Rooms natively supports dropping in your own custom Python inference functions. You aren't limited to standard LLM endpoints.
- Local Priority Integration: Zero-leakage API routing via
litellm. Seamlessly integrates with local offline instances. - Dynamic Turn Orchestration: Agents interact via
round_robin,argumentative, ordynamicrelevance-based conversational flows. - Expertise-Weighted Selection: In
dynamicmode, agents are scored against the live topic context — the most relevant expert speaks next. - User-Directed Addressing: Type
@AgentNamein any input to force a specific agent to respond next, bypassing automatic scoring. - PASS Mechanic: Agents may respond with
PASSif they have nothing meaningful to add, silently skipping their turn and keeping the flow clean. - Deep Personas: Configure intricate agent backgrounds and behavioral instructions dynamically per session.
- Custom Architectures: Bypass standard LLMs entirely and plug in custom Python functions for specific agent inference.
- Human-In-The-Loop: Inject user instructions at defined intervals — or instantly when an agent directly addresses the user by name.
- User Profile & Identity: Name and background provided at session start; agents treat the user as an equal room participant.
- Global Orchestrator: A designated room moderator that fires every N turns to summarize or redirect agents, with no runaway loop risk.
- Timestamped Session Memory: All turns, messages, and system events are tagged with precise timestamps for full auditability.
The framework allows extreme granularity in handling session configurations:
| Capability | Scope | Notes |
|---|---|---|
| Generative Control | Per-Agent | Set temperature, max_tokens, timeout, and system prompts individually. |
| Logic Hooks | Runtime | Dynamically load native .py files to act as agents. |
| Data Preservation | Ephemeral | RAM-only by default. Prompted to export as Markdown or CSV on exit. |
| Session Memory | Full History | Timestamped history shared across all participants throughout the session. |
| User Identity | Per-Session | User name and background injected into room intro for agent awareness. |
| Expert Routing | Dynamic | Agents scored by expertise against live context — best fit speaks next. |
| Forced Addressing | On-Demand | @AgentName in any message forces that agent's next response. |
For deeper insights into how to leverage and modify the framework, please refer to our dedicated documentation guides:
- Architecture & LiteLLM Guide - Understand how local API routing, session memory, and agent selection work.
- Use Cases, Examples & Best Practices - Parameter cheat sheet, deep persona guide, scenario walkthroughs, and an edge case reference table.
- Testing Strategy - How to write and run deterministic tests for multi-agent logic.
- Contributing Guide - Learn how to contribute to the project, report bugs, and follow our design philosophy.
Rooms/
├── rooms/ # Core Package
│ ├── __init__.py
│ ├── config.py # Pydantic Configuration Models
│ ├── agent.py # Agent & LiteLLM/Custom Logic
│ ├── session.py # Turn Orchestration & Memory
│ └── storage.py # Secure Log Serialization
├── tests/ # Unit Tests
│ └── test_session.py # Logic Verification
├── outputs/ # Session Transcripts
├── cli.py # Interactive Wizard Entry Point
└── requirements.txt # Project Dependencies# Clone the repository
git clone https://github.com/arpahls/Rooms.git
cd Rooms
# Setup Environment
python -m venv venv
venv\Scripts\activate # Windows: venv\Scripts\activate | Unix: source venv/bin/activate
# Install Dependencies
pip install -r requirements.txtStart the Interactive Wizard
python cli.pyThe wizard will step you through:
- Setting your user profile (name and background)
- Defining the session topic and turn limits
- Inviting default or custom agents with individual temperatures and system prompts
- Optionally assigning a Global Orchestrator
During a session, type @AgentName in any user input to force a specific agent to respond next.
Run Tests
# Always run via pytest with PYTHONPATH set:
$env:PYTHONPATH="."; python -m pytest tests/ -vThis project is licensed under the MIT License - see the LICENSE file for details.
Track our active progress on the GitHub Issues board.

