ac98c3e2420de5c8ee070528b70a036f7f280883
OpenClaw Agent Fleet Dashboard
A real-time task coordination board for the OpenClaw agent fleet.
Features
- Kanban Board: Backlog → Todo → In Progress → Review → Done
- Agent Assignment: Assign tasks to specific OpenClaw agents
- Priority Levels: High, Medium, Low
- Tags: Categorize tasks with tags
- Wiki Auto-Generation: Completed tasks generate wiki documentation
- Real-time Updates: WebSocket-powered live updates
- REST API: For agent heartbeat integration
Quick Start
cd /home/bear/homelab/ubuntu/taskboard
docker compose up -d --build
Access at: https://agentdash.local.tophermayor.com
API Endpoints
Tasks
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tasks |
List all tasks (filter: ?assignee=ubuntu&status=todo) |
| GET | /api/tasks/:id |
Get single task |
| POST | /api/tasks |
Create task |
| PATCH | /api/tasks/:id |
Update task |
| POST | /api/tasks/:id/complete |
Complete task (creates wiki) |
| DELETE | /api/tasks/:id |
Delete task |
Wiki
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/wiki |
List wiki pages |
| GET | /api/wiki/:filename |
Get wiki page content |
Agent Heartbeat
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/heartbeat/:agent |
Get pending tasks for agent |
Agent Integration
Add to agent's HEARTBEAT.md:
# Check for assigned tasks
TASKS=$(curl -s http://192.168.50.61:8395/api/heartbeat/ubuntu)
# If tasks pending, process them
if echo "$TASKS" | jq -e '.pending_tasks > 0' > /dev/null; then
echo "Processing assigned tasks..."
# Process tasks...
fi
Example: Create Task via API
curl -X POST http://localhost:8395/api/tasks \
-H "Content-Type: application/json" \
-d '{
"title": "Restart PostgreSQL container",
"description": "The postgres-shared container needs a restart for config changes",
"assignee": "ubuntu",
"priority": "high",
"tags": ["docker", "database"]
}'
Example: Complete Task with Wiki
curl -X POST http://localhost:8395/api/tasks/TASK_ID/complete \
-H "Content-Type: application/json" \
-d '{
"implementation_details": "Restarted the container using docker restart postgres-shared. Verified connections working.",
"files_changed": ["/home/bear/homelab/ubuntu/postgres/docker-compose.yml"]
}'
Task Schema
{
"id": "uuid",
"title": "string",
"description": "string",
"assignee": "ubuntu|pve|truenas|grizzley|ice|panda|zeroclaw|docs",
"status": "backlog|todo|in_progress|review|done",
"priority": "high|medium|low",
"tags": ["array", "of", "tags"],
"created_at": "ISO timestamp",
"updated_at": "ISO timestamp",
"completed_at": "ISO timestamp or null",
"wiki_path": "filename.md or null"
}
Directory Structure
taskboard/
├── docker-compose.yml
├── Dockerfile
├── README.md
├── package.json
├── server.js
├── client/
│ └── index.html
├── public/
│ ├── index.html
│ └── app.js
├── data/
│ └── tasks.db (SQLite)
└── wiki/
└── (auto-generated wiki pages)
Deployment
The taskboard is deployed on the ubuntu host at:
- URL: https://agentdash.local.tophermayor.com
- Port: 8395
- Container: openclaw-taskboard
- Traefik Route: /home/bear/homelab/ubuntu/traefik/config/dynamic/taskboard.yml
License
MIT
Description
OpenClaw Agent Fleet Dashboard - Task coordination board for the OpenClaw agent fleet
Languages
TypeScript
58.8%
JavaScript
26.8%
CSS
7.5%
HTML
6.3%
Shell
0.4%
Other
0.2%