Christopher Mayor 1804aa664b feat: Add navigation bar and multi-page dashboard
- Add navigation bar with 4 main sections: Tasks, Wiki, Agents, Usage
- Implement Wiki page with task documentation viewer
- Implement Agents page showing workspace, tools, and current tasks
- Implement Usage page displaying providers, models, and quotas
- Add API endpoints: /api/agents, /api/usage, /api/wiki
- Add agent heartbeat endpoint for task assignment
- Update Docker compose with volume mounts for agent and config data
- Add comprehensive CSS for all pages and responsive design
- Add JavaScript navigation and dynamic content loading

🚀 Features:
- 📋 Kanban task board (existing)
- 📚 Wiki documentation viewer
- 🤖 Agent fleet management dashboard
- 📊 Provider usage and quota monitoring
- 🔗 Real-time WebSocket updates
- 📱 Responsive mobile design
2026-03-03 15:45:53 -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%