Each of the 12 AI agents in the Rinse Repeat Labs orchestrator has a dedicated portal in the web dashboard. These portals allow agents to manage their workspace and request new features, just like employees in a real company.
Agent portals serve two key purposes:
- Workspace Management — Each agent has a customized view of their responsibilities, metrics, and relevant data
- Feature Requests — Agents can request new tools, data, or improvements to their section of the dashboard
This creates a self-improving system where agents can identify their own needs and the Architect (human overseer) can prioritize and implement the most valuable changes.
Start the Flask web application:
cd webapp
python app.pyNavigate to:
- All Portals:
http://localhost:5000/agents - Individual Portal:
http://localhost:5000/agents/<agent_id>
Agent IDs: ceo, cfo, cito, sales, legal, dev_lead, design_lead, qa_lead, pm, customer_success, marketing, support
# List all feature requests
python orchestrator.py requests list
# View pending requests
python orchestrator.py requests pending
# Show a specific request
python orchestrator.py requests show <request_id>Each portal displays:
- Role & Name — Agent's title and full name
- Description — What the agent does
- Team — Executive, Technical, or Operations
- Responsibilities — Key duties
- Metrics — Performance indicators they track
Agents can view and manage their submitted requests:
- Total Requests — All requests submitted
- Pending — Awaiting review
- Approved — Ready for implementation
- Implemented — Completed and deployed
Timeline of recent actions and request status changes.
Each agent portal has multiple tabs for different functionality:
The main tab showing:
- Agent profile and description
- Key responsibilities and metrics
- Custom instructions (if configured)
- Recent activity timeline
- Quick actions and navigation
Customize how the agent appears and behaves:
| Setting | Description |
|---|---|
| Display Name | Custom name shown in dashboard |
| Role Title | Short title shown in badges |
| Description | What this agent does |
| Responsibilities | Key duties (one per line) |
| Key Metrics | Performance indicators (one per line) |
| Custom Instructions | Extra context for AI meetings |
| Reports To | Who this agent reports to |
| Direct Reports | Agents who report to this one |
| Collaborates With | Key collaboration relationships |
Settings are stored in data/agent_customizations.json and affect both the web interface and CLI meetings.
View and manage the agent's submitted requests (see Feature Request System).
Documentation explaining how this agent functions within the orchestrator system.
Each agent has a chat interface for real-time conversations through the web dashboard.
- Navigate to an agent's portal:
/agents/<agent_id> - Click "Start Chat" in Quick Actions
- Or go directly to:
/agents/<agent_id>/chat
- Real-time messaging — Send messages and receive AI responses
- Conversation history — Chat sessions are persisted and can be resumed
- Agent context — The AI has access to the agent's role, responsibilities, and custom instructions
- Conversation starters — Quick prompts to begin discussions
The CEO agent has enhanced capabilities through the chat interface:
| Capability | Description |
|---|---|
| Update Agent Settings | Modify any agent's display name, role, instructions, etc. |
| Update Company Settings | Change company name, tagline, industry |
| Create Feature Requests | Submit requests on behalf of agents |
| Approve/Reject Requests | Process pending feature requests |
| Update Idea Status | Move ideas through the pipeline |
| Broadcast Instructions | Add instructions to multiple agents at once |
| Update Reporting Structure | Change who reports to whom |
When the CEO proposes an action, it appears as a confirmation panel. You must Confirm or Dismiss before the action executes.
The CEO can include actions in responses using this format:
[ACTION: action_type]
{"parameter": "value"}
[/ACTION]
Example CEO interaction:
You: "Update the CFO to focus on bootstrapped startups"
CEO: "I'll update the CFO's custom instructions to emphasize
bootstrapped startup financial strategies.
[ACTION: update_agent_settings]
{"agent_id": "cfo", "updates": {"custom_instructions": "Focus on bootstrapped startups with limited runway. Emphasize capital efficiency and sustainable growth over aggressive spending."}}
[/ACTION]"
→ Confirmation panel appears
→ Click "Confirm" to execute
→ CFO's settings are updated
| Action | Parameters | Description |
|---|---|---|
update_agent_settings |
agent_id, updates |
Update agent configuration |
update_company_settings |
updates |
Change company name/tagline/industry |
create_feature_request |
agent_id, title, description, priority, request_type |
Create a feature request |
approve_feature_request |
request_id, notes |
Approve a pending request |
reject_feature_request |
request_id, reason |
Reject a pending request |
update_idea_status |
idea_id, new_status, notes |
Change an idea's status |
broadcast_to_agents |
agent_ids, instruction, append |
Add instructions to multiple agents |
update_reporting_structure |
agent_id, reports_to, direct_reports |
Change reporting hierarchy |
Chat sessions are stored in data/agent_chats.json:
{
"id": "uuid",
"agent_id": "ceo",
"topic": "Strategic planning",
"messages": [
{"role": "user", "content": "...", "timestamp": "..."},
{"role": "assistant", "content": "...", "timestamp": "..."}
],
"started_at": "2026-01-20T10:00:00",
"ended_at": null,
"is_active": true
}In addition to 1:1 chat with agents, you can hold group meetings with multiple agents through the web dashboard.
- Navigate to Agent Portals > Start Group Meeting
- Or go directly to:
/group-meetings/new - Or from the agents list page, click Start Meeting
Choose from preset meeting configurations or create custom combinations:
| Preset | Agents | Best For |
|---|---|---|
| Executive Meeting | CEO, CFO, CITO, Sales, Legal | Strategic business decisions |
| Technical Meeting | CITO, Dev Lead, Design Lead, QA Lead | Architecture, technical quality |
| Product Meeting | PM, Dev Lead, Design Lead, QA Lead | Sprint planning, product features |
| Operations Meeting | PM, Customer Success, Marketing, Support | Day-to-day operations |
| All-Hands Meeting | All 12 agents | Company-wide alignment |
| Idea Review | CEO, CITO, CFO, Dev Lead, Design Lead, Marketing | Evaluating new ideas |
| Custom Meeting | Your selection | Any agent combination |
- Multi-agent responses — All participants respond to your messages in turn
- Role-specific perspectives — Each agent contributes their unique viewpoint
- Quick prompts — Built-in prompts for summarizing, identifying risks, next steps
- Conversation history — Meetings are saved and can be reviewed later
- Active/Ended status — End meetings when done, start new ones anytime
Meetings are stored in data/meetings.json:
{
"id": "uuid",
"meeting_type": "exec",
"meeting_name": "Executive Meeting",
"topic": "Q1 Planning",
"agent_ids": ["ceo", "cfo", "cito", "sales", "legal"],
"messages": [
{"role": "user", "content": "...", "timestamp": "..."},
{"role": "ceo", "content": "...", "agent_name": "Alex Chen", "timestamp": "..."}
],
"started_at": "2026-01-20T10:00:00",
"ended_at": null,
"is_active": true
}| Type | Description | Examples |
|---|---|---|
| Feature | New functionality | Dashboard widgets, new tools |
| Enhancement | Improvements to existing features | Better filtering, faster loading |
| Data/Report | New metrics, dashboards, reports | KPI tracking, trend analysis |
| Integration | External system connections | API integrations, third-party tools |
| UI/UX | Interface improvements | Better layouts, clearer navigation |
| Automation | Automated workflows | Alerts, scheduled reports, reminders |
| Priority | Description | Use When |
|---|---|---|
| Critical | Blocking current work | Can't perform essential duties |
| High | Significantly impacts effectiveness | Major productivity improvement |
| Medium | Would improve workflow | Moderate benefit (default) |
| Low | Nice to have | Minor convenience |
┌──────────┐ ┌─────────────┐ ┌──────────┐ ┌─────────────┐ ┌─────────────┐
│ Submit │────▶│ Under Review│────▶│ Approved │────▶│ In Progress │────▶│ Implemented │
└──────────┘ └─────────────┘ └──────────┘ └─────────────┘ └─────────────┘
│
│
▼
┌──────────┐
│ Rejected │
└──────────┘
│
▼
┌──────────┐
│ Deferred │
└──────────┘
- Submitted — Request created by agent
- Under Review — Architect is evaluating
- Approved — Request accepted, awaiting implementation
- Rejected — Request declined (with reason)
- Deferred — Postponed for later consideration
- In Progress — Currently being implemented
- Implemented — Complete and deployed
Other agents can vote on requests:
- Support — Indicates the feature would help them too
- Oppose — Indicates concerns about the request
Votes help the Architect understand cross-team impact and prioritize effectively.
# All requests
python orchestrator.py requests list
# Filter by agent
python orchestrator.py requests list --agent ceo
# Filter by status
python orchestrator.py requests list --status approved
# Limit results
python orchestrator.py requests list --limit 10# Show pending requests (prioritized)
python orchestrator.py requests pending
# Show specific request details
python orchestrator.py requests show <request_id># Create a feature request
python orchestrator.py requests create \
--agent ceo \
--title "Revenue Dashboard" \
--description "Real-time dashboard showing revenue by project and client" \
--type feature \
--priority high \
--justification "Need visibility into financial performance for strategic decisions" \
--area "Dashboard"# Approve a request
python orchestrator.py requests approve <request_id> \
--note "Great idea, adding to next sprint"
# Reject a request
python orchestrator.py requests reject <request_id> \
--reason "Duplicates existing functionality"
# Update status
python orchestrator.py requests status <request_id> in_progress \
--note "Development started"
# Cast a vote (as another agent)
python orchestrator.py requests vote <request_id> cfo --type supportWhen submitting requests:
- Be Specific — Clearly describe what you need
- Explain the Why — Include business justification
- Consider Impact — Think about how it affects other agents
- Set Realistic Priority — Reserve "critical" for true blockers
- Suggest Solutions — Include ideas for implementation
Example of a good request:
Title: Client Health Score Dashboard
Description: A dashboard showing client health scores based on:
- Project delivery status
- Payment history
- Support ticket trends
- NPS/satisfaction scores
Justification: Currently I have to manually check multiple systems
to assess client health. An aggregated view would save 2-3 hours
weekly and help identify at-risk clients before issues escalate.
Type: Data/Report
Priority: High
Affected Area: CustomerSuccess Dashboard
When reviewing requests:
- Consider Cross-Team Value — Look at votes from other agents
- Batch Related Requests — Implement related features together
- Provide Feedback — Always explain approval/rejection decisions
- Track Patterns — Repeated requests indicate real needs
- Balance Teams — Ensure all teams get attention
| Agent | Portal Focus |
|---|---|
| CEO | Strategic metrics, company health, key relationships |
| CFO | Financial dashboards, invoicing, cash flow |
| CITO | Technical evaluation, architecture decisions, team metrics |
| Sales | Pipeline management, lead tracking, deal velocity |
| Legal | Contract tracking, compliance status, NDA management |
| Agent | Portal Focus |
|---|---|
| DevLead | Code quality, sprint velocity, technical debt |
| DesignLead | Design assets, user research, accessibility |
| QALead | Test coverage, bug metrics, release readiness |
| Agent | Portal Focus |
|---|---|
| PM | Project status, resource allocation, delivery metrics |
| CustomerSuccess | Client health, NPS, retention metrics |
| Marketing | Growth metrics, ASO rankings, campaign performance |
| Support | Ticket volume, response times, knowledge base |
Feature requests are stored in data/agent_requests.json with the following structure:
{
"id": "uuid",
"agent_id": "ceo",
"title": "Request Title",
"description": "Detailed description",
"request_type": "feature",
"priority": "medium",
"status": "submitted",
"justification": "Business justification",
"affected_area": "Dashboard section",
"votes": {
"support": ["cfo", "sales"],
"oppose": []
},
"review_notes": [],
"created_at": "2026-01-19T12:00:00",
"reviewed_at": null,
"reviewed_by": null
}Agents are aware of their portal capabilities during meetings. When an agent identifies a need for new functionality, they can:
- Mention it in the meeting for discussion
- Submit a formal request through their portal
- Get feedback from other agents (votes)
- Track implementation progress
This creates a feedback loop where meeting discussions can drive portal improvements, and portal analytics can inform meeting discussions.