Operator ruling 2026-09-24. On ana-docker the stack is `docker compose down`: the container is removed and port 7878 is closed. Kept for revival: - the data dir /opt/docker/conf/task-board/data (tasks.db, last written 2026-09-11) - the task-board:local image - stacks/task-board/ and the host's compose + .env The Uptime Kuma monitor (id 3) was deleted before the stop so it could not page, and its row is removed from monitors.yaml. Homepage drops the card on its own, since it reads the container's labels. Hooks: the container log showed no hook POSTs in 30 days. The only traffic was open browser tabs holding /events, and the plugin was already uninstalled on nh3-dev. Removed the paragraph that told sessions to call task_* tools (CLAUDE.md, and the fork-fleet.sh template that seeds new repos), the vestigial TASK_BOARD_SESSION env in .claude/settings.json, and the listings in README and FLEETTOOLS.
task-board
MCP + web dashboard that shows what the assistant is working on. Green (active) / Red (waiting) / Grey (dormant) cards with comment streams.
Server: ana-docker
Port: 7878 (configurable via .env)
Upstream repo: vh/task-board
Image: task-board:local — built on the host from the git repo by
the deploy playbook. Not pulled from a registry.
Deploy
Two paths — automated (preferred) and manual (escape hatch / first-time).
Automated (Gitea Actions, push-to-main)
Once the central gitea-runner is up (see stacks/gitea-runner/README.md),
every push to main on vh/task-board triggers a deploy. The workflow
just calls the same elway playbook below; the playbook stays the
single source of truth for "how task-board is deployed."
Workflow template lives next to this README at
gitea-workflow-deploy.yaml.example;
copy it into the task-board repo at .gitea/workflows/deploy.yaml.
The example header lists the two repo secrets required
(DEPLOY_SSH_KEY, MGMT_REPO_TOKEN).
Manual (elway from a workstation)
The playbook owns the full flow: clone/update the source repo,
docker build, install compose + seed .env, bring up, verify health.
# First deploy (or update to latest main)
scripts/elway ana-docker --playbook playbooks/deploy-task-board.yaml
# Pin to a specific ref (tag, branch, or commit SHA)
scripts/elway ana-docker --playbook playbooks/deploy-task-board.yaml --var ref=v0.1.0
Wiring into Claude Code
After deploy, add to ~/.claude/settings.json (user-level) or .mcp.json
(project-level):
{
"mcpServers": {
"task-board": {
"type": "http",
"url": "http://10.250.50.70:7878/mcp"
}
}
}
Assistant gains four tools (task_start, task_update, task_wait,
task_complete). Web UI at http://10.250.50.70:7878/.
Path layout (on ana-docker)
| Host path | Container path | Purpose | Restic? |
|---|---|---|---|
/opt/docker/build/task-board/ |
— | git checkout used as docker build context | excluded |
/opt/docker/compose/task-board/ |
— | compose.yaml + .env | included (via /opt/docker) |
/opt/docker/conf/task-board/data/ |
/app/data |
SQLite (tasks.db) |
included |