Rinse Repeat Labs (RRL) is an AI-powered app development studio with a 12-agent orchestrator system. The project includes:
- CLI Orchestrator (
orchestrator.py) - Command-line interface for agent meetings and data management - Web Dashboard (
webapp/) - Flask-based visual management interface - Data Stores (
src/data_store.py) - JSON-backed persistence layer - Agent System (
agents/) - 12 specialized AI agents with defined roles
# First-time setup wizard
python orchestrator.py setup
# Setup and launch web dashboard
python orchestrator.py setup --launch-web
# One-command web start (auto-opens browser)
python start.py
# CLI - Run 1:1 meeting with an agent
python orchestrator.py 1on1 --agent ceo
# CLI - Data management
python orchestrator.py ideas list
python orchestrator.py testers add --name "John" --email "john@test.com"
python orchestrator.py requests pending
# Web Dashboard (manual)
cd webapp && python app.py
# Opens at http://localhost:5000orchestrator.py # Main CLI entry point (meetings, data management, setup)
start.py # Quick-start script for web dashboard (auto-opens browser)
├── src/
│ ├── data_store.py # All data stores (Ideas, Testers, Clients, Projects, Finances, AgentRequests)
│ ├── data_cli.py # Click commands for data management
│ ├── reports.py # Report generation
│ └── utils.py # Helper functions
├── agents/ # Agent system prompts (12 markdown files)
├── webapp/
│ ├── app.py # Flask application with all routes + HTMX endpoints
│ ├── templates/ # Jinja2 templates (Bootstrap 5)
│ │ └── */partials/ # HTMX partial templates for live updates
│ └── static/ # CSS, JS assets
└── data/ # JSON data files (gitignored)
| ID | Role | Team |
|---|---|---|
ceo |
Chief Executive Officer | Executive |
cfo |
Chief Financial Officer | Executive |
cito |
Chief Information Technology Officer | Executive |
sales |
Sales Director | Executive |
legal |
Legal Counsel | Executive |
dev_lead |
Development Lead | Technical |
design_lead |
Design Lead | Technical |
qa_lead |
Quality Assurance Lead | Technical |
pm |
Project Manager | Operations |
customer_success |
Customer Success Manager | Operations |
marketing |
Marketing Director | Operations |
support |
Support Lead | Operations |
All stores use singleton pattern and share JSON files between CLI and Web:
from src.data_store import get_ideas_store, get_agent_requests_store
# Get store instance
store = get_ideas_store()
# Common operations
store.get_all()
store.get_by_id(id)
store.create_*(...)
store.update(id, {field: value})
store.delete(id)agents/*.md- Each agent's system prompt and capabilitieswebapp/app.py- All web routes including HTMX endpoints (1800+ lines)src/data_store.py- Data models and persistenceconfig.py- Configuration and agent listdocs/AGENT_PORTALS.md- Agent portal feature documentation
- HTMX Integration - Real-time partial page updates without full reloads
- Agent Portals - Each agent has a dedicated workspace at
/agents/<agent_id> - Feature Requests - Agents can submit requests, Architect approves/rejects
- Shared State - CLI and Web use same
data/*.jsonfiles
- Add store class in
src/data_store.py - Add CLI commands in
src/data_cli.py - Register command in
orchestrator.py - Add web routes in
webapp/app.py - Create templates in
webapp/templates/
- Add route in
webapp/app.pyunder HTMX section (prefix:/htmx/) - Create partial template in
webapp/templates/*/partials/ - Add
hx-get,hx-trigger,hx-swapattributes to target element
- Edit
agents/<agent_id>.mdfor system prompt changes - Update
AGENT_INFOdict inwebapp/app.pyfor web portal info
# Check data stores work
python -c "from src.data_store import get_ideas_store; print(get_ideas_store().get_all())"
# Run Flask in debug mode
cd webapp && python app.py
# CLI help
python orchestrator.py --help
python orchestrator.py ideas --help- Bootstrap 5 for all UI components
- Jinja2 templates extend
base.html - Agent IDs are lowercase with underscores (e.g.,
dev_lead) - Status enums defined in
data_store.py - All timestamps in ISO 8601 format