Taskboard: one task list for people and agents
Once a few AI agents are doing real work, the hard question stops being "can it do this?" and becomes "what is it doing right now, and is it actually finished?" A chat transcript is a poor answer to both. Taskboard is a shared, durable task system where people plan work and agents report execution against the same records.
Progress that agents cannot fake
Agents use Taskboard over MCP. Starting a task requires at least one concrete checklist item, exactly one item can be current at a time, and completion is rejected while required items remain open. Skipping an item needs a reason, and blocked or waiting states need an explanation. Optimistic versions keep two agents from overwriting each other.
Each agent run holds a renewable lease. If heartbeats stop, the run goes stale instead of silently looking busy, and a person decides whether to requeue it. Every session gets a friendly callsign for the board, but audit history always records the authenticated principal and a server-issued run ID; a client's self-reported name is only diagnostic metadata.
A conversation attached to the work
Tasks carry an append-only thread for notes, instructions, questions, and answers, with explicit receipts. A structured escalation pairs a question with choices and a recommendation; a blocking one ends the run, and the task becomes claimable again only after a person answers. Pause and cancel are acknowledged requests with visible outcomes rather than pretend process kills. Typed references link the task to its branches, pull requests, CI runs, and deployments.
On the human side, tasks live in private, team, or agent-pickup lanes with server-enforced visibility. The board is a PWA with Web Push and a small Tauri tray client that raises a native notification for each completed step. Routine producers can be batched into one daily review instead of a stream of pings. It runs on SQLite by default, or PostgreSQL when several replicas need to share state.
Dispatching work to runners
taskboard-dispatch is the first step toward letting queued work start itself. A dispatcher advertises a runner token and capacity, claims matching agent-lane tasks, and hands each one to a backend. The first backend runs a local command per claim in a private work directory, renews leases while the worker lives, and records a handoff if it exits early. It never retries a failed worker or claims stale work on its own: a person stays in that loop.
Source and documentation: github.com/kilo666mj/taskboard and github.com/kilo666mj/taskboard-dispatch.