Pullboard

How it works.

Six pictures, one at a time. The CLI makes every one itself, so none of them can go stale.

Show

How work moves.

You decide the spec. Agents claim, build and submit. A second agent verifies that commit.

How work moves. You decide the rows of SPEC.md. An item freezes its bar when an agent claims it. Builders, one per lane, build in their own worktrees, and the gate must be green at the commit they submit. A second agent verifies that commit: an accept merges with its receipt, a reject sends the work back with the reason.

Starting with an agent.

Set up the repo, commit, and tell your coding agent what to build. It runs the team from there.

Starting with an agent. You run pullboard init in your git repo, commit what it wrote, open a new Claude Code session in that folder and say what to build. That agent becomes the coordinator: it takes the spec with you, plans lanes and items, runs a builder per lane and a verifier that built none of it, and merges verified work only.

An item's life.

Every state, move and refusal, drawn from the one place the CLI declares them.

An item's life, drawn from src/machine.js: each state an item can be in, the moves between them, and the refusals every way into a final state can raise.

Where things live.

The coordinator's checkout, the worktrees beside it, and the board inside .git.

Where things live. The main checkout is the coordinator and holds SPEC.md, PRACTICE.md, pullboard.json, AGENTS.md and the git hooks. Inside .git, shared by every worktree, are the board and the pinned submitted commits. Beside it, each agent works in its own worktree, builders in their lanes and a verifier, all on the same board. pullboard view lists every project on this machine.

The board you watch.

pullboard view on a demo board: every project on your machine, live, on one page.

The Pullboard board shows open, claimed, submitted and accepted work, with a pending decision and the accepted item's review history.

On your phone.

The same board, in dark mode, on a phone's width.

The same board on a phone, in dark mode.

What you get

What changes once your agents work from a board in your repo.

See it in thirty seconds

The tour runs a real reject and its fix on a throwaway repo. Then set up your own.

npm i -g pullboard
pullboard tour