pullboard is a free, open source version control & collaboration project written in JavaScript and released under MIT. It has 672 GitHub stars, 73 forks and 9 open issues, and was last pushed 7 days ago. On this registry it ranks #41 of 51 tracked projects in Version Control & Collaboration, with 5 head-to-head comparisons available.

What is pullboard?

Pullboard is an MIT-licensed, JavaScript command-line coordination layer for developer teams that want governed AI coding agents to build from approved specifications inside their own Git repository, with independent verification before anything merges.

What it is

Pullboard lives in a Git repository, has no dependencies, and acts as a coordination queue for agentic software development. It is built around five primitives: Items, the tasks that each have a verification bar and one agent working at a time; Shouts, the way agents ask questions up the chain; Spec, the plan with one row per requirement where only approved rows count; Doctrine, the repository rules with an enforcer such as a Git hook or review; and Activity, the ordered record of every claim, submit, reject and accept. The project describes itself as a vibe-first, spec-driven, test-proven methodology that reserves judgement for the human in the loop, and it sits in the JavaScript, Git, CLI and coding-agent ecosystem alongside tools named in its topics such as claude-code and codex.

The concrete problem is coordination after the demo stage: multiple coding agents need a shared plan, separate lanes and proof before work counts. Pullboard replaces the ad hoc prompt-and-chat-log workflow with a declared specification, atomic item claims, isolated worktrees, and a second agent that verifies the exact commit before merge. Agents build from a spec the user approved, stay out of each other’s way in lanes, and cite the items and code they mean when they communicate. The stated outcome is that a complex project stays coherent for months because the user’s decisions, judgement and taste carry across every agent and session.

Key capabilities

  • Spec enforcement: approved rows in SPEC.md are the contract and are frozen when an agent claims the work; only the rows the user approves count.
  • Doctrine enforcement: DOCTRINE.md holds the repository rules, and each rule has an enforcer ranging from a Git hook to review.
  • Lane isolation: each agent works in its own worktree, claims are atomic, and items can wait on other items.
  • Proof before merge: submit requires a green gate, then a different agent verifies that exact commit.
  • Items and Shouts: one agent works an item at a time, questions go up the chain, and only the user’s calls reach the user.
  • Activity record: every claim, submit, reject and accept is recorded in order, so nothing happens off the record.
  • Blueprints: ten bundled blueprints cover project kinds such as web apps, libraries, iOS apps and data pipelines; npx pullboard init --blueprint web-app starts a board from one, and pullboard blueprint save turns approved rules into a blueprint for the next project.

Who uses it and how

  • Developers and teams building a real product in Git who want dozens of agents to claim work, build it and land it on main while the user follows progress, answers questions and approves changes from one board.
  • Coordinator-led workflows where one agent leads the others, fans work out to lanes and writes down the user’s preferences so the user does not explain twice.
  • Walk-away workflows where the user pairs a phone and lets the board run, with the README reporting that Pullboard’s own board has cycled through 490 agents.
  • Projects that start from a bundled blueprint for a web app, library, iOS app or data pipeline, rather than from an empty board.

Getting started

Run npx pullboard init --blueprint web-app to start a board from a bundled blueprint, or use pullboard blueprint save to turn approved rules into a blueprint for a future project. The project homepage is pullboard.dev, and the README also references watching Pullboard build itself live.

How it compares

The facts do not name similar tools or a list of paid products that Pullboard replaces. Pullboard therefore stands alone in this registry, positioned by the facts as a Git-resident CLI for governed agent coordination.

When to use it — and when not to

Choose Pullboard when the work is a real product kept in Git, the team is willing to approve a SPEC.md and a DOCTRINE.md, and multiple coding agents need separate worktrees, a coordinator and proof before merge. A self-hoster must operate a Git repository and agent runners; the facts mention no database, storage or SMTP requirements, but they also provide no operational runbook. The facts give version 0.8.29 and a last push date but no release history, so teams that require a fully managed service, named commercial support or a documented operations story should not select it from these facts alone.

project readme (upstream, from github) — read inline

Pullboard

pullboard.dev · lives in your git repo · no dependencies · Walk away, and it builds.

pullboard: finished items npm MIT license

Pullboard enforces your intent and decisions. Build autonomously.

  1. Vision: what you want.
  2. Specification: your vision written down.
  3. Inspection: independent verification.

Pullboard keeps agents building true to your intent, with a second agent checking every change. Your judgement carries across every agent and every session, so a complex project stays coherent for months. It's a coordination queue for serious software: you decide what matters once, and many agents build, check and land the work.

Watch Pullboard build itself, live →


Vibe code a real product. Agents build from a spec you approved, in lanes that keep them out of each other's way, and nothing they build is done until a second agent verifies it against the requirements you agreed.

You follow progress, answer questions and approve changes from one board, and the team picks up where it left off. Coherency is built in: agents shout to each other and cite the items and code they mean. It's a vibe-first, spec-driven, test-proven methodology that reserves judgement for the human in the loop.

A builder agent says done and tests pass. A second agent checks the work, finds a problem and sends it back with the reason. The fix passes and merges.

▶ Watch the 90-ish second explainer

Software factory

Prompting is for discovery. Declaring is for delivery. Declare what you want once, and the factory runs without you: dozens of agents claim the work, build it and land it on main through the night. Your job moves from typing prompts to the judgements only you can make. Your decisions, judgement and taste are the bar that work must clear. You come back to shipped features, not a chat log.

One agent. Or a hundred. (Maybe thousands.)

We've cycled through 490 agents on Pullboard's own board so far, and your project runs the same Pullboard, held to the spec you approve. Every agent you add starts the same way: one command gives it a worktree, a lane of its own and its first instructions. Pair your phone when you're ready to walk away.

What are blueprints? New in 0.8.29. A blueprint is the spec rules and starter items for one kind of project. Ten come bundled, for web apps, libraries, iOS apps, data pipelines and more. Start a board from one:

npx pullboard init --blueprint web-app

pullboard blueprint save turns your approved rules into a blueprint for your next project.

Philosophy

You do not explain twice. You rule the agents. Hierarchy is enforced. Judgement is yours. Declare it, and the Doctrine (the house rules for agentic development) stands. You speak the constraints, agents fill in the blanks. The Spec is canon. Then code. Then proof.

Key concepts

Five primitives. Everything else is built on them.

  • Items. The tasks. Each has a bar it is checked against, and one agent works it at a time.
  • Shouts. How agents talk. Questions go up the chain, and only your calls reach you.
  • Spec. The plan, one row per requirement. Only the rows you approve count.
  • Doctrine. Each rule has an enforcer, from a git hook to review.
  • Activity. Every claim, submit, reject and accept, in order. Nothing happens off the record.

Why

Past the demo, the same things break.

How it works

Pullboard gives agents a shared plan, separate lanes and proof before work counts.

  • Spec. Approved rows in SPEC.md are the contract, frozen when an agent claims the work.
  • Doctrine. DOCTRINE.md holds the repo's rules. Hooks enforce what a machine can check.
  • Lanes. Each agent works in its own worktree. Claims are atomic, and items can wait on others.
  • Proof. Submit needs a green gate. Then a different agent verifies that exact commit.

You decide what to build. Agents build it and check each other's work. This is the Agentic Development Lifecycle (ADLC).

Questions

Agents ask when a call isn't theirs to make. Their coordinator settles what it can, and only your calls reach you.

[!TIP] Recommended best practice: work deeply with one agent, your coordinator. It fans work out to the lanes and writes your preferences down, so you never explain twice. Always let one agent lead the others.

Doctrine

A Spec is what you build. Doctrine is how you build it.

  • Doctrine: "We keep only the data we need."
  • Spec: "A shopper can pay by card in one step."

Every repo starts with Pullboard's standard doctrine. Add to it, override it, or decline any part of it.

Spec

Every requirement is one row of SPEC.md, in one format:

- <id> [<status>, <priority>] <what must be true> | gate: <what proves it>

For example:

- G1 [approved, must] A shopper can pay by card in one step. | gate: test/checkout.test.js

The id is a section letter and a number. A row stays a draft until you approve it, and only approved rows count.

Receipts

We build Pullboard this way, and nearly one in three items goes back. One receipt:

#13  worktree prints a subagent's opening lines

     REJECT  BEHAVIOR_MISMATCH  by tests-2
             "the printed cd line double-quoted the token without escaping it;
              copying it expanded the token away and exited 1"

     resubmitted 85f0f5d
     ACCEPT  CRITERION_MET  by tests-2
             "runs the printed cd line with a conflicting value and reaches the
              real target; removing either escape makes the test fail"

Pullboard View

Your agents work in terminals. You watch them here: every project on this machine, live on one page.

  • Needs you: only your calls. Decisions passed up, rows to approve, held lanes.
  • Timeline: every item's claims, submits and verdicts, with the reason for a reject.
  • Actions: add items, answer decisions, shout to a lane, hold a lane.
  • API: it runs on local API v1, which your own scripts can use too.
  • Export: view --export writes a static, replayable snapshot.
pullboard view

Items

Every item's state, criterion and review history, with the calls only you can make at the top.

Shouts

The agents' conversation: decisions passed up to you, your answers, evidence and code references.

Roadmap

Each release's progress, with any item expanded in place: its criterion, agents, history and release.

On your phone

The same board in your pocket.

The board on a phone

What's being built, what's in review, and the calls only you can make, in one place.

Get started

Thirty seconds to see it, then your own repo. You need git and Node 22.13 or newer.

Installation

npm i -g pullboard
pullboard tour

On a throwaway repo, you approve one rule: greet a blank name as "world". The coordinator files it, a builder builds it, and a verifier tries a blank name and rejects it. The builder fixes it and adds a test. The verifier breaks the fix on purpose, sees the test fail, and accepts. The coordinator merges it with a receipt.

Project setup

Give your agent this line in an empty or existing git repo.

Install Pullboard and set it up here; it's for .

Your agent installs Pullboard, runs pullboard init and commits the setup. It then walks you through setup in the view it opens. You approve your requirements and answer its questions.

You can also run it yourself.

init writes your spec, doctrine and agent instructions, and installs the hooks and the board. Commit what it wrote, then open Claude Code in the repo and say what to build. That agent becomes your coordinator.

pullboard init
git add -A && git commit -m "chore(repo): set up pullboard"

Manual workflow

Every step the coordinator takes, you can take yourself from the repo's main checkout.

## G · Goals: what the client asked for
- G1 [approved, must] A shopper can pay by card in one step. | gate: test/checkout.test.js
- G2 [draft, aim] Saved carts follow a shopper across devices. | serves: G1

Write the spec in SPEC.md.

Then set the gate and the lanes in pullboard.json, as in Configuration.

pullboard add web "Checkout" --specs G1 --criterion "card payment takes one step"

File the work. Its bar freezes when an agent claims it.

Set PULLBOARD_MODEL to the model your agent actually uses; the --model option can take its value.

pullboard worktree web --model "$PULLBOARD_MODEL"
cd ../myapp-web-1
pullboard next
pullboard submit 1

A builder claims it, commits citing the row as feat(web): pay by card [G1], and submits green.

Set PULLBOARD_MODEL to the model your agent actually uses; the --model option can take its value.

pullboard worktree review --model "$PULLBOARD_MODEL"
cd ../myapp-review-1
pullboard next --verify
pullboard verify 1 accept --note "paid in one step; without the fix the test fails"

A verifier checks out that exact commit, then accepts with evidence or rejects with a reason.

Working with agents

A few commands keep every agent on track.

  • pullboard worktree makes a lane worktree and prints a subagent's first instructions.
  • pullboard resume brings an agent back to its claim, messages and next step after a restart.
  • pullboard next claims the next free item, never one someone else holds.
  • pullboard run lets a lighter model build simple items unattended.
  • Claude Code gets skills. Codex and others read AGENTS.md or pullboard prompt . The triage skill covers outside issues and pull requests, with replies and actions approved by the maintainer; other agents can read it with pullboard prompt triage.

Architecture

Your whole board is one file inside .git, on your machine.

Every move follows one declaration, published in docs/lifecycle.md.

Agentic Item Lifecycle (AILC)

Items are state machines. Every item starts open. An agent claims it and it's claimed; if the agent goes quiet, it reopens. Once submitted, it's submitted until a verifier accepts it as verified or rejects it back to open. Only the coordinator can withdraw an item. The board refuses any move the declaration doesn't allow.

Drawn from one declaration, src/machine.js, which the commands, the view and the docs all share.

Data and storage

Everything lives in your repo. Nothing is hosted.

  • Spec, doctrine and config: plain files, committed with your code.
  • The board: one SQLite file inside .git, shared by every worktree, never committed.
  • Submitted work: pinned in git, so it survives a deleted worktree.
  • Backups: pullboard export writes out the whole board.

Configuration

pullboard.json sets the gate and the lanes.

{
  "gate": "npm test",
  "lanes": {
    "web": { "owns": ["apps/web/"], "specs": ["G"] },
    "review": { "owns": [] }
  }
}

The gate is any command that proves your code, like npm test or pytest, and it runs before every submit and push. Each lane owns paths and spec sections, and a commit outside its lane is refused.

Multi-language support

Pick the gate for your stack. Chain checks with &&, like ruff check . && pytest.

Stack Gate
JavaScript, TypeScript npm test
Python pytest
Go go test ./...
Rust cargo test
Java mvn test or gradle test
Ruby bundle exec rspec
C#, .NET dotnet test

Purpose

Pullboard exists to keep a team of agents coherent over a long build.

Limits

  • Worktree identity only means something on one machine. It's not a security boundary.
  • You can skip a hook with --no-verify. The pre-push gate and the verifier are the backstops.
  • CI runs on Linux and macOS. Windows isn't tested yet.

What's next

  • A team shares one board: every person's clones, machines and phones show the same items in one order [E1].
  • Every session on a paired machine works the board alike: terminal, SSH, agent, scheduled job or CI; the key sits in an owner-only file [E9].
  • Each person may keep a private board per repo in ~/.pullboard; its items stay on that person's devices [E11].

The full plan lives in the Roadmap tab in Pullboard View and pullboard roadmap.

Docs

The reference docs, in reading order.

  • Lifecycle: how an item moves, state by state.
  • CLI JSON API: every command's output, for scripts and tools.
  • Stored formats: the board's files, exports and their versions.
  • Relay architecture: who is who on the relay, what it stores and what it can read.
  • RFCs: the design decisions, and why.

License

Pullboard is released under the MIT License.


Vibe hard. Verify harder.

yolo: verified

Frequently asked questions

Is pullboard free to use?

pullboard is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does pullboard do?

Autonomous development for real products. Governed agents build from specs you approve, follow the rules you set, and nothing merges until another agent proves

What is pullboard written in?

pullboard is primarily written in JavaScript. Its source is publicly available at https://github.com/pullboard-dev/pullboard, and it has 672 GitHub stars.