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.
54 lines
2.1 KiB
YAML
54 lines
2.1 KiB
YAML
# task-board — MCP + web dashboard for assistant task state.
|
|
#
|
|
# ⚠ MOTHBALLED 2026-09-24 (operator): superseded by the High Seat (SVOS) and
|
|
# ledger. On ana-docker the container is `docker compose down`ed; the data dir
|
|
# (/opt/docker/conf/task-board/data, tasks.db last written 2026-09-11), the
|
|
# task-board:local image and this compose + .env are KEPT. To revive:
|
|
# `cd /opt/docker/compose/task-board && docker compose up -d`, then re-add its
|
|
# Uptime Kuma row. Its Claude Code hooks had sent no traffic for 30+ days.
|
|
#
|
|
# Image is built on the host from the task-board git repo by the deploy
|
|
# playbook (`playbooks/deploy-task-board.yaml`), which clones into
|
|
# /opt/docker/build/task-board and runs `docker build -t task-board:local .`
|
|
# before installing this compose and bringing it up.
|
|
#
|
|
# SQLite state persists under ${TASK_BOARD_DATA_DIR} (bind-mounted) so
|
|
# container rebuilds don't lose task history.
|
|
#
|
|
# All tunables live in .env — edit that, not this file.
|
|
|
|
services:
|
|
task-board:
|
|
image: ${TASK_BOARD_IMAGE}
|
|
container_name: task-board
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${TASK_BOARD_BIND:-0.0.0.0}:${TASK_BOARD_PORT}:7878"
|
|
volumes:
|
|
- ${TASK_BOARD_DATA_DIR}:/app/data
|
|
environment:
|
|
# Container always listens on 7878 internally; host port is the only knob.
|
|
- TASK_BOARD_PORT=7878
|
|
- TASK_BOARD_BIND=0.0.0.0
|
|
- TASK_BOARD_DORMANT_AFTER=${TASK_BOARD_DORMANT_AFTER:-3600}
|
|
- TASK_BOARD_ARCHIVE_TTL=${TASK_BOARD_ARCHIVE_TTL:-86400}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python -c 'import urllib.request,sys; r=urllib.request.urlopen(\"http://127.0.0.1:7878/api/health\",timeout=3); sys.exit(0 if r.status==200 else 1)' || exit 1"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 15s
|
|
networks:
|
|
- tnet
|
|
labels:
|
|
- homepage.group=Toolchain
|
|
- homepage.name=task-board
|
|
- homepage.icon=mdi-view-dashboard-variant
|
|
- homepage.description=Assistant task state dashboard (MCP + web UI)
|
|
- homepage.href=http://10.250.50.70:${TASK_BOARD_PORT}
|
|
|
|
networks:
|
|
tnet:
|
|
name: traefik-net
|
|
external: true
|