# task-board — MCP + web dashboard for assistant task state. # # 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