Christopher Mayor 8a859e2e92 Initial commit: OpenClaw Agent Fleet Dashboard
- Kanban board with 5 columns (Backlog, Todo, In Progress, Review, Done)
- Agent assignment for all OpenClaw agents
- Priority levels and tags
- Wiki auto-generation on task completion
- REST API for agent heartbeat integration
- Real-time updates via WebSocket
- SQLite database for task storage
- Docker deployment configuration
- Traefik ingress configuration
2026-03-03 15:02:01 -08:00

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:

License

MIT

Description
OpenClaw Agent Fleet Dashboard - Task coordination board for the OpenClaw agent fleet
Readme 747 KiB
Languages
TypeScript 58.8%
JavaScript 26.8%
CSS 7.5%
HTML 6.3%
Shell 0.4%
Other 0.2%