Web Dashboard
MindRoom includes a web dashboard for configuring agents, teams, rooms, and integrations without editing YAML files. Changes are synchronized to config.yaml in real-time.
Accessing the Dashboard
Standalone Mode:
The dashboard will be available at http://localhost:8765.
When running from a source checkout, MindRoom will build the dashboard assets on first start if Bun is available.
SaaS Platform: Access your dashboard at https://<instance-id>.mindroom.chat
Dashboard Tabs
Dashboard (Overview)
The main dashboard shows system stats and monitoring:
- Stats cards - Agents (with status breakdown), rooms, teams, models, and voice status
- Network graph - Visual representation of agent-room-team relationships (desktop only)
- Search and filter - Filter by agents, rooms, or teams
- Export Config - Download configuration as JSON
Agents
Configure AI agents:
- Display name and Role description
- Model - Select from configured models
- Memory backend - Inherit global memory backend or override per agent (
mem0orfile) - Tools - Organized into configured tools (green badge) and default tools (no config needed)
- Instructions - Custom behavior instructions
- Rooms - Where the agent operates
- Learning - Enable or disable Agno Learning per agent (enabled by default)
- Learning mode - Choose
always(automatic extraction) oragentic(tool-driven)
Teams
Configure multi-agent collaboration:
- Display name and Team purpose
- Collaboration mode - Coordinate (sequential) or Collaborate (parallel)
- Team model - Optional model override
- Team members and Team rooms
Rooms
Manage Matrix room configuration:
- Display name and Description
- Room model - Optional model override
- Agents in room - Select which agents have access
External Rooms
View and manage rooms that agents have joined but are not in the configuration:
- Per-agent view with room names and IDs
- Bulk selection and Leave rooms functionality
- Open in Matrix - Link to view in your Matrix client
Models & API Keys
Configure AI model providers:
- Add/edit models with provider, model ID, host URL, and advanced settings
- Provider filter to show models by provider
- Test connection to verify model accessibility
- Provider API keys section for configuring credentials
Runtime-supported providers: OpenAI, Anthropic, Google Gemini (google/gemini), Vertex AI Claude (vertexai_claude), Ollama, OpenRouter, Groq, DeepSeek, Cerebras
Memory
Configure global memory defaults:
- Backend - Global default backend (
mem0orfile) - Provider - Ollama (local), OpenAI, or Sentence Transformers
- Model - Provider-specific embedding models
- Host URL - For Ollama provider
- File backend settings - Path and file memory tuning options
- Auto-flush settings - Background extraction and flush controls for file-backed memory
Per-agent overrides are configured from the Agents tab using the Memory backend selector.
Knowledge
Manage file-backed RAG knowledge bases:
- Create/edit/delete knowledge bases with
pathandwatchsettings - Upload and remove files per knowledge base
- Reindex a knowledge base on demand
- Track index status (
file_countandindexed_count) - Assign agents to a specific knowledge base from the Agents tab
Git-backed knowledge bases are supported, but Git settings are currently configured in config.yaml (knowledge_bases.<id>.git), not via dedicated dashboard controls yet.
- The dashboard preserves existing
gitsettings when you editpath/watch. /api/knowledge/bases/{base_id}/filesreflects the manager's filtered file set (for exampleinclude_patterns/exclude_patterns).- Private HTTPS repo auth can be managed in the Credentials tab, then referenced by
knowledge_bases.<id>.git.credentials_service. - In API-only mode, Git-backed bases are cloned/synced/indexed automatically on first manager initialization.
POST /api/knowledge/bases/{base_id}/reindexsyncs Git first for Git-backed bases before rebuilding the index.
Credentials
Manage service credentials directly from the dashboard:
- List configured credential services from
CredentialsManager - Create/select service names (for example
github_privateormodel:sonnet) - Edit raw JSON credential payloads and save via
/api/credentials/{service} - Test credentials existence using
/api/credentials/{service}/test - Delete credential sets using
/api/credentials/{service} - Reuse credentials for Git knowledge sync by setting
knowledge_bases.<id>.git.credentials_serviceto the same service name GITHUB_TOKENauto-seedsgithub_private(username: x-access-token,token: <GITHUB_TOKEN>,_source: env) unless the service is UI-managed
Culture
Configure shared culture rules that apply across agents:
- Create/edit/delete cultures with description and mode
- Assign agents to cultures
- Mode selection -
automatic(always active),agentic(agent decides when to update), ormanual(read-only)
Schedules
View and manage scheduled tasks across rooms:
- List all schedules with room, status, schedule type, and next run time
- Edit schedule timing and description
- Cancel schedules by task ID
Skills
Manage OpenClaw-compatible skills:
- List installed skills with origin and edit status
- View skill content (SKILL.md)
- Create new skills with name and description
- Edit user-created skills
- Delete user-created skills
Voice
Configure voice message handling:
- Enable/disable voice message support
- Speech-to-Text - OpenAI Whisper or self-hosted
- Command Intelligence - Model selection for command recognition
Integrations
Connect external services to enable agent capabilities:
- Categories - Email & Calendar, Communication, Shopping, Entertainment, Social, Development, Research, Smart Home, Information
- Search and filter by status (Available, Unconfigured, Configured)
- OAuth flows for Google (6 endpoints), Spotify (4 endpoints), Home Assistant (7 endpoints), and more
Features
Real-time Sync
The sync status indicator in the header shows:
- Synced - All changes saved
- Syncing... - Save in progress
- Sync Error - Sync failed
- Disconnected - Lost connection to backend
Theme and Responsive Design
Toggle between dark and light themes. The dashboard adapts to desktop and mobile devices.
API Endpoints
The dashboard communicates with the backend API at /api/:
Configuration
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/config/load |
Fetch current configuration |
| PUT | /api/config/save |
Save full configuration |
| GET | /api/config/raw |
Fetch the raw config.yaml source for recovery editing |
| PUT | /api/config/raw |
Replace the entire raw config.yaml source during recovery |
| GET | /api/config/agents |
List all agents |
| POST | /api/config/agents |
Create new agent |
| PUT | /api/config/agents/{id} |
Update agent |
| DELETE | /api/config/agents/{id} |
Delete agent |
| GET | /api/config/teams |
List all teams |
| POST | /api/config/teams |
Create new team |
| PUT | /api/config/teams/{id} |
Update team |
| DELETE | /api/config/teams/{id} |
Delete team |
| GET | /api/config/models |
List model configurations |
| PUT | /api/config/models/{id} |
Update model configuration |
| GET | /api/config/room-models |
Get room model overrides |
| PUT | /api/config/room-models |
Update room model overrides |
| POST | /api/config/agent-policies |
Get backend-derived agent policies for a draft config |
When /api/config/load returns validation errors, the dashboard fetches /api/config/raw, opens the recovery editor, and saves a full replacement through PUT /api/config/raw before retrying the structured reload.
Credentials
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/credentials/list |
List services with credentials |
| GET | /api/credentials/{service}/status |
Get credential status |
| GET | /api/credentials/{service} |
Get credentials for editing |
| POST | /api/credentials/{service} |
Set credentials |
| POST | /api/credentials/{service}/api-key |
Set API key |
| GET | /api/credentials/{service}/api-key |
Get masked API key |
| POST | /api/credentials/{service}/test |
Test credentials validity |
| DELETE | /api/credentials/{service} |
Delete credentials |
| POST | /api/credentials/{service}/copy-from/{source_service} |
Copy credentials from another service |
Credentials support scoping via query parameters:
agent_name— scope credentials to a specific agentexecution_scope— scope credentials to a specific worker scope (e.g.,shared,unscoped)
Knowledge
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/knowledge/bases |
List configured knowledge bases |
| GET | /api/knowledge/bases/{base_id}/files |
List files in a knowledge base |
| POST | /api/knowledge/bases/{base_id}/upload |
Upload one or more files |
| DELETE | /api/knowledge/bases/{base_id}/files/{path} |
Delete a file from disk and index |
| GET | /api/knowledge/bases/{base_id}/status |
Get indexing status |
| POST | /api/knowledge/bases/{base_id}/reindex |
Rebuild the index for a base |
Skills
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/skills |
List all installed skills |
| GET | /api/skills/{skill_name} |
Get skill detail (content, origin, edit status) |
| POST | /api/skills |
Create a new user skill |
| PUT | /api/skills/{skill_name} |
Update a user skill's content |
| DELETE | /api/skills/{skill_name} |
Delete a user skill |
Schedules
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/schedules |
List scheduled tasks (filterable by room) |
| PUT | /api/schedules/{task_id} |
Edit a scheduled task |
| DELETE | /api/schedules/{task_id} |
Cancel a scheduled task |
Workers
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/workers |
List active sandbox workers |
| POST | /api/workers/cleanup |
Clean up idle sandbox workers |
Health & Readiness
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/health |
Returns {"status": "healthy"} when the HTTP server is running and Matrix sync is active. Returns 503 with {"status": "unhealthy", "stale_sync_entities": [...]} when Matrix sync has been stale for >180s (after watchdog recovery attempts) |
| GET | /api/ready |
Returns {"status": "ready"} when the orchestrator has finished startup. Returns 503 with {"status": "<phase>", "detail": "..."} otherwise |
MindRoom tracks runtime phases internally:
| Phase | Meaning |
|---|---|
idle |
Process not started |
starting |
Startup in progress (detail message available) |
ready |
Orchestrator booted, serving requests |
failed |
Startup or runtime failure (detail message available) |
Use /api/health for liveness probes and /api/ready for readiness probes in container orchestrators. Note: /api/health returns 503 when Matrix sync is stale (>180s without successful sync, after the 120s watchdog timeout has attempted recovery). Configure liveness probe failureThreshold to allow sufficient time for watchdog self-healing.
Tools & Matrix
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tools |
List available tools |
| GET | /api/rooms |
List configured rooms |
| GET | /api/matrix/agents/rooms |
Get all agents' room memberships |
| GET | /api/matrix/agents/{id}/rooms |
Get specific agent's rooms |
| POST | /api/matrix/rooms/leave |
Leave a single room |
| POST | /api/matrix/rooms/leave-bulk |
Leave multiple rooms |