- 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
139 lines
3.5 KiB
Markdown
139 lines
3.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```json
|
|
{
|
|
"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
|