Skip to content

Agent WorkboardA kanban board your agents can work

A local-first board for coordinating AI coding agents. You get a UI to steer the work; your agents get an HTTP API and an MCP server. No account, no cloud service, no telemetry.

Quick Start

bash
docker compose up --build

Open http://localhost:8088. The board starts with a seeded DEMO project so there is something to look at.

To run a tagged release instead of building from source:

bash
docker run --rm \
  -p 127.0.0.1:8088:8080 \
  -v "$PWD/.workboard-data:/data" \
  -e WORKBOARD_HOST=0.0.0.0 \
  ghcr.io/ventus-software-solutions/agent-workboard:latest

The Agent Workboard board view, showing tasks across backlog, ready, in progress, review, testing, blocked, and done columns

Point Your Agents At It

Add the MCP server to your agent's config:

json
{
  "mcpServers": {
    "agent-workboard": {
      "command": "node",
      "args": ["/absolute/path/to/agent-workboard/server/mcp.js"],
      "env": {
        "WORKBOARD_DATA_DIR": "/absolute/path/to/agent-workboard/.workboard-data"
      }
    }
  }
}

Then start an agent. The board tells it what to do, so the prompt stays short:

text
You are implementer. Read http://localhost:8088/api/agent-docs/implementer?format=md and do what it tells you.

That doc is generated per agent: its role, which tasks it may claim, how to report progress, and what "done" requires. Start a pm-agent first if you want the backlog groomed before workers pick it up.

The Agents view shows the slots you have configured, which are occupied, and what each specializes in:

The Agents view, showing configured agent slots grouped by role with desired counts, specialties, and free or occupied status

A task open in the detail drawer, showing status transitions, the completion record control, assignee, priority, and dependency links

Security Boundary

The board is unauthenticated. Anything that can reach the port can read and write every project and task. That is the intended design for a single-operator local tool.

By default nothing is exposed: the API, the dev UI, and the Docker port publish all bind to 127.0.0.1. Keep the 127.0.0.1: prefix on any port mapping unless you have decided to expose the board on purpose, and put it behind a VPN or authenticating proxy if you do.

SECURITY.md has the threat model and how to report a vulnerability privately.

Where To Go Next