Web Dashboard
The MonoClaw dashboard is a web-based interface for managing Mona. It provides session browsing, job monitoring, metrics, and a chat terminal — all accessible from your browser.
Installation
The web extra is included in the [all] install and the [local-office] bundle. If you installed the minimal bundle:
cd ~/.monoclaw/monoclaw-runtime
uv pip install -e ".[web]"
This installs FastAPI and uvicorn.
Starting the dashboard
monoclaw dashboard
This starts the dashboard on http://localhost:8080 by default.
Dashboard features
Sessions
- Browse past conversations
- Search session history
- Export sessions to Markdown
- Resume sessions
Jobs
- View running cron jobs
- Check job execution history
- Retry failed jobs
Metrics
- Token usage per model
- Tool call frequency
- Response latency
- Error rates
Chat terminal
- Web-based chat interface
- Supports markdown rendering
- File upload/download
- Voice input (browser-supported)
Configuration
# ~/.monoclaw/config.yaml
dashboard:
enabled: true
host: "127.0.0.1"
port: 8080
auth:
enabled: true
username: "admin"
password: "${DASHBOARD_PASSWORD}"
Production deployment
For remote access, use a reverse proxy with HTTPS:
nginx
server {
listen 443 ssl;
server_name monoclaw.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Caddy
monoclaw.yourdomain.com {
reverse_proxy localhost:8080
}
API endpoints
The dashboard exposes a REST API:
| Endpoint | Description |
|---|---|
GET /api/sessions | List sessions |
GET /api/sessions/{id} | Get session details |
POST /api/chat | Send a message |
GET /api/jobs | List cron jobs |
GET /api/metrics | Get usage metrics |
Authentication
Enable basic auth for production:
dashboard:
auth:
enabled: true
type: basic
username: "admin"
password: "${DASHBOARD_PASSWORD}"
Troubleshooting
| Problem | Fix |
|---|---|
| "Dashboard not found" | Install the [web] extra |
| "Port already in use" | Change dashboard.port in config |
| "Cannot access remotely" | Bind to 0.0.0.0 or use a reverse proxy |
| WebSocket errors | Ensure your reverse proxy supports WebSocket upgrade |