Files
openclaw-taskboard/README.md
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

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