Multi-agent workspace editor for OpenClaw and AI orchestration platforms.
Browse, edit, and manage workspace files for multiple AI agents from a single dashboard — with Monaco Editor, dark mode, i18n, and real-time system stats.
- Multi-agent switching — navigate between agents via sidebar grid (hash routing, no page reload)
- Monaco Editor — syntax highlighting, Ctrl+S save, per-extension language detection
- File management — browse, create, move, delete, upload (drag & drop), download
- Config file shortcuts — one-click access to AGENTS.md, SOUL.md, MEMORY.md, etc.
- Search — filename and content search across agent workspaces
- Dark mode — toggle with system preference detection, persisted in localStorage
- i18n — English and Portuguese included, easily extensible
- System stats — RAM, disk, and load average in the status bar
- Quick links — configurable external service shortcuts
- Auto-discover — scans
/workspaces/for agent directories automatically - Optional auth — basic auth via environment variable
- Config-driven — agents, links, branding, protected files — all in one JSON file
- No build step — vanilla JS + Express, Monaco via CDN
git clone https://github.com/yourusername/clawboard.git
cd clawboard
npm install
node server.jsOpen http://localhost:3000 — ClawBoard auto-discovers agent workspaces in /workspaces/.
docker compose up -dOr with custom config:
services:
clawboard:
build: .
ports:
- "8181:3000"
volumes:
- ./clawboard.config.json:/app/clawboard.config.json:ro
- /path/to/workspaces:/workspaces:rw
environment:
- CLAWBOARD_AUTH=admin:changemeAll settings in clawboard.config.json:
{
"name": "ClawBoard",
"locale": "en",
"workspacesDir": "/workspaces",
"autoDiscover": true,
"branding": "ClawBoard",
"agents": [
{
"id": "agent-1",
"name": "My Agent",
"emoji": "🤖",
"color": "#6366f1",
"role": "General Purpose",
"avatar": "/api/agent/agent-1/file?path=/avatar.png"
}
],
"quickLinks": [
{ "name": "Docs", "url": "https://docs.example.com" }
],
"configFiles": [
{ "name": "AGENTS.md", "icon": "👥" },
{ "name": "MEMORY.md", "icon": "🧠" }
],
"protectedFiles": ["AGENTS.md", "SOUL.md", "MEMORY.md"],
"folderShortcuts": [
{ "name": "inbox", "icon": "📥", "path": "/inbox" }
]
}When autoDiscover is true (default), ClawBoard scans workspacesDir for subdirectories and registers them as agents. Configured agents take priority — auto-discovered ones get default emoji and color.
Send SIGHUP to reload config without restarting:
docker kill -s HUP clawboard| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
CLAWBOARD_CONFIG |
Path to config file | ./clawboard.config.json |
CLAWBOARD_AUTH |
Basic auth (user:pass) |
(disabled) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/config |
Public config (agents, links, branding) |
| GET | /api/agents |
List all agents |
| GET | /api/agent/:id/files?path= |
Directory listing |
| GET | /api/agent/:id/file?path= |
Read file |
| PUT | /api/agent/:id/file?path= |
Write file (text body) |
| DELETE | /api/agent/:id/file?path= |
Delete file or directory |
| POST | /api/agent/:id/move |
Move file ({from, to}) |
| POST | /api/agent/:id/mkdir |
Create directory ({path}) |
| POST | /api/agent/:id/upload?path=&filename= |
Upload file (binary body) |
| GET | /api/agent/:id/recents?limit= |
Recently modified files |
| GET | /api/agent/:id/search?q=&type= |
Search (name or content) |
| GET | /api/stats |
System stats (RAM, disk, load) |
Add locale files to public/locales/:
public/locales/
├── en.json # English
├── pt.json # Portuguese
└── fr.json # Add your own
Toggle language with the button in the top bar. Locale is persisted in localStorage.
ClawBoard was built for OpenClaw's multi-agent architecture where each agent has its own workspace directory. Mount each agent's workspace:
volumes:
- /path/to/workspace-main:/workspaces/jarbas:rw
- /path/to/workspace-scout:/workspaces/scout:rw
- /path/to/workspace-coder:/workspaces/coder:rwMIT