需要 Node/npm 环境,README 未给出最低版本;初始化后要自行 git add 并提交生成的配置;代理需设置 PULLBOARD_MODEL 指向实际使用的模型
pullboard
pullboard-devMIT活跃维护用受治理的 AI 代理按你批准的规格自主开发真实产品,代码需经另一代理验证才能合并,决策与品味始终由你把关。
Autonomous development for real products. Governed agents build from specs you approve, follow the rules you set, and nothing merges until another agent proves it. Your decisions, judgement and taste are the bar that work must clear. Declare your vision and let agents build it.
让多个 AI 代理按你批准的规格自主开发,并由第二个代理验证后才合并
用受治理的 AI 代理按你批准的规格自主开发真实产品,代码需经另一代理验证才能合并,决策与品味始终由你把关。
核心能力
- 用 Items 状态机管理任务,代理认领、提交、验证或打回
- 第二个代理检出确切 commit 独立验证,通过才合并
- 用 Spec 逐行声明需求,只有你批准的条目才算数
- Doctrine 为每条规则指定执行者,从 git hook 到评审
- 内置十种项目蓝图,一条命令初始化看板
容易踩的坑
- v0.9.3最新正式版2026-10-27 · 2026-10-27 14:51 UTC
Teams and many boards: a board now knows its people and their roles, each repo can keep a private board beside the team board, and every move completes locally at once.
Added
- The board knows its people: events name who made each move, approvers decide, and moves only a person may make are signed with a passkey tap from any terminal, including over SSH (#343, #408, #1135).
- Every session can read and move: a terminal, SSH, an agent, a job or CI. Each board has one coordinator, passed by takeover across sessions and people (#344, #347).
- A clone of a linked repo joins its board, and a member's device hands over the key. A linked computer goes by the name you give it when linking, and you can pair a second phone or browser with the command the page shows (#342, #978, #1004).
- Each repo can keep a private board beside the team board, and items move between them (#345).
- Boards work across repos: an item can wait on an item in another repo's board, written
repo#id;pullboard decisionslists every open decision across a project's repos; and linked boards pass decisions, item offers and receipts with only the fields you permit (#558, #559, #1245, #1247, #1248). - Without the relay, two machines share one board through the repo's git remote, and a phone can see and act on a board through the view on your local network (#562, #563, #1226).
- Review independence: an agent's grant narrows to its item at claim, an agent's helpers are recorded under it, a reviewer is refused for any item its session ever built, and a reviewer can withdraw its own accept before the item lands (#348, #800, #1085, #1102, #1143).
- The view opens on whether the rules hold, then on what needs you. Needs you shows agent-approved rows, sentinel drafts and Rigor's automatic drafts with Approve and Decline, each showing the row's full text and check (#965, #967, #1021, #1026, #1150, #1374).
- Agents can propose a change to an approved spec row; it waits in Needs you with the old and new text side by side (#980, #1191).
- When Pullboard blocks something only a person can do, it says so at once with the one step, shows it in Needs you in plain words, and clears it when the move later succeeds (#1022, #1060, #1077).
- A Settings page shows every setting by scope, read-only (#969).
- The README's item-count badge is live: it reads the board's own record and refreshes on every landing (#1061, #1410).
- Decisions record where they came from (you, relayed from you, an agent, inherited), and
pullboard why <file>lists the decisions behind a file. Decisions have their own queue, so the asker keeps working and the answer lands on the item (#970, #1220). pullboard initadds light hooks for Claude Code and Codex: resume at session start and a reminder about unsubmitted work at the end. They never block;init --no-hooksskips them. An agent can work the whole loop through MCP (#961, #971).- Pull requests get a "verified by a second agent" status teams can require; a pull request made outside Pullboard shows as not verified. Teams that work in pull requests can have Pullboard open one pull request per release carrying each item's proof, and merging it ships the release.
pullboard intake <PR>files an outside pull request as an item verified only in a sandbox (#987, #988, #1027). pullboard nextorders the queue itself: unblockers and quick wins first, the focus milestone first when the board names one, longest remaining path first, and never work that collides with work in flight. A seat with no claim is never told to wait. A milestone can carry an item limit and lists its open items first (#1017, #1094, #1114, #1190, #1210, #1239, #1242, #1382).- Messages go to the item and the people on it, not to everyone. Item conversation is typed notes on the item thread, each agent reads a feed tailored to its work, and the feed splits into interrupts and a digest for natural breaks. Seats report presence (live, idle or gone), and every seat has its own add
- v0.9.2Pullboard 0.9.22026-10-22 · 2026-10-22 09:01 UTC
查看更新说明
Your board catches its own repeats
Pullboard now turns a failure that keeps coming back into a rule with its proof. Rigor runs by itself: it names the files that keep colliding and proposes how to split them, and it carries your code and test quality rules as checks it runs on every change. Its new rules arrive as drafts, and only you approve them. Sentinels watch for something wrong right now: a board holds its own watches, which you approve and which report to their owner, and Rigor can draft one when a check could watch a repeat.
Added
- The view shows blueprint fit proposals with their reasons, and sentinel drafts for you to approve. (#762, #920)
pullboard statsandpullboard digestsay what the board caught: work a reviewer sent back and the gap it named, merges that went back instead of landing broken, flaky tests proven, and stuck states. It stays quiet unless someone asks. (#816)- Pullboard tracks flaky tests, including CI runs: a test that goes red and green on the same tree is filed once with its runs, and can stop blocking landings until its fix is verified (
pullboard flakes quarantine on, off by default). (#887, #918, #813) pullboard queueshows the work queue with release breakpoints, rank, route and who holds each item, andpullboard healthnames queue faults: a route nobody serves, an item nobody can take, a rank out of order. (#797, #798)- A recurring job declares its cadence with
pullboard loop declare, and a missed run shows in health. (#815) - Optional two-tier landing: accepted work lands on your local trunk in seconds, and
pullboard publishpushes only a head the whole suite passed (landing.publishset toseparate; off by default, except thatpullboard initturns it on in a repo with no remote). (#801, #963) - A reopened item can wait for its own builder first, for a time you set (
claim.reopenFirstRefusalMinutes; off by default). (#954) - A spec row an agent marks approved by hand shows as agent-approved, with the agent and commit, until you confirm or decline it. A setting,
spec.agentApproval, chooses flag (the default), allow or refuse. (#960) GET /api/v1/settingsreports the board's settings, each with its scope, its value and where it comes from, read-only; secrets show only as set or not set.spec.agentApprovaljoins the list in the next release. (#968)pullboard publishrecords each full-suite run, so a flaky test it sees is filed like any other. (#975)
Safer by default
- A rule cannot lose its test silently: spec check fails when an approved row's gate file was deleted or renamed. (#809)
- The board runs a revert control before it accepts a fix, a gate that rejects everything is an alarm and not a pass, and a check whose pipe hides its exit status is refused. (#810, #811, #812)
- A verdict from the session that built the item is refused, and a change that edits an existing test or gate file says why. (#921, #814)
- Lane branches, merge commits, docs and view files never name your machine or quote you. (#892, #893, #894, #895)
Your board on your phone
- A board of any size opens on a phone from a small snapshot, then streams its full history while new moves arrive. The relay holds snapshots up to 64 MB, and an account nearing its storage quota is warned before any write is refused. (#903, #946, #949)
- A linked board opens in Safari and other WebKit browsers. (#976)
- A move still succeeds while the relay is down: it waits in an ordered outbox and is sent when the relay is back. A slow or lost relay reply never fails a local move. (#922, #919)
- The hosted page shows a screen right away on iPhone Safari, names the real reason a signed-in browser sees no board with the one step that fixes it, and never flashes another screen first. (#897, #899, #900, #901, #904, #932)
- In Safari, app.pullboard.dev now finds the board running on your computer. (#977)
- pullboard.dev now mentions a board that is waiting for approval on your phone. (#985)
- v0.9.1Pullboard 0.9.12026-10-19 · 2026-10-19 13:43 UTC
查看更新说明
pullboard.dev opens your board, and pairing just works
Open pullboard.dev on any device and it takes you to your board one clear step at a time.
pullboard initoffers to share the board with your phone in one Enter, andpullboard viewkeeps running in the background, so your phone always has a board to open.Added
- Relay and pairing:
pullboard initoffers to share your board with your phone in one Enter.pullboard viewkeeps running in the background.- The view links this machine's boards to pullboard.dev in one sign-in, from a card you can close and bring back.
- Approving a link on your phone delivers the board without another command.
pullboard relay deviceslists phones and joined computers by name.- A lost phone can be revoked without that phone's approval.
- A revoked browser is refused and told it was removed.
pullboard relay on --allsays who signed in, what it linked and what it waits for.- The hosted page says how far behind this machine Pullboard is.
- Roadmap:
- Each milestone sums its items by state, with an estimate at today's pace; on a slow day it estimates from the last 24 hours, or says it's too early to tell.
- Finished milestones sit under Shipped, and the Roadmap opens on the current release.
- A blocked item shows a dot and expands in place to say why.
pullboard roadmaplists the work to ship first.
- Rigor:
pullboard rigornotices a failure cause that repeats.pullboard rigor draftturns a repeated cause into a draft row with its proof, waiting in Needs you.
pullboard healthnames every stuck item, why it's stuck, and who moves it next.pullboard digestwrites a readable briefing of one board.pullboard gate set "<command>"sets the project gate in one step. A board without a gate is told that command with the test command Pullboard found (such asmake test), never a hand edit of pullboard.json.pullboard watchfollows the board's live event stream.pullboard next:- follows the coordinator's ranking inside a release;
- names the item and the seat to work in across an agent's lanes;
- in the main checkout, points a newcomer to their lane.
- A newcomer working alone can start their reviewer with one command.
- An agent in a lane worktree can draft a spec row and cite it at once without editing a file outside its lane; every writer takes its row id from one allocator on the board, so two drafts never share an id.
- An item that fails twice at one route moves up a route by itself; at the strongest route it stays with its builder.
- An accepted item that conflicts with the trunk reopens for a main merge with
pullboard reopen <id> --conflict <file>, and its accept stays recorded. - A person's waiver also covers the submit and landing gates.
- A ruling the person approves becomes doctrine every agent reads, and a decision names the items it changes.
- A test that escapes to landing is proposed as a submit invariant.
pullboard init:- takes a product and an architecture blueprint together;
- grants the agent the permissions the Pullboard loop needs;
- commits its own setup files, or offers to in one Enter.
- Blueprints:
- A blueprint fits the repo before you approve it.
- Its questions default from the repo they land in.
- Each rule names its source.
- Its starter items land in a build lane.
Changed
pullboard submitruns the static style checks first, in seconds.pullboard initsays the one line that matters first, and folds the rest.- A board building without spec rows is no longer told to draft the spec first.
- Only test files that start a browser wait for a browser slot, and a short check never waits behind whole suites.
- The gate pool serves the current release first.
- A check that's already green on main holds the item until the person accepts it.
- Agents ask the person only through the coordinator.
Fixed
- An agent can't mint relay tokens from its worktree.
- Relay and pairing:
- v0.9.0Pullboard 0.9.02026-10-17 · 2026-10-17 04:33 UTC
查看更新说明
Open your board from pullboard.dev
pullboard.dev now lists the boards on this machine beside your linked boards, so one page opens all of them. Link every board once with
pullboard relay on --all, pair your phone from the QR it prints, and open pullboard.dev on any device.Added
- pullboard.dev lists the boards on this machine together with the boards you linked, and opens either kind.
- The phone page can be installed to your Home Screen, and it asks the browser to keep its storage, so a paired phone stays paired.
pullboard lane add <lane> --owns <path>makes a lane, andpullboard initproposes lanes for the folders it finds.- A Doctrine rule can carry a check and a
count:that only falls:pullboard submitrefuses a change that makes a touched rule's count rise. - With
landingShardsinpullboard.json, the landing gate splits its tests into shards that run in parallel, locally or on registered runners. - Machine settings, all off unless you set them:
gate.queue.reviewsFirst: the gate pool admits reviews before submits, withgate.queue.agingMinutesbounding every wait.gate.memoryFloorMB: the gate pool holds new work while free memory is under the floor, and names the biggest processes.
- Every bundled blueprint's starter items carry a criterion and a check, so the first item can be built and verified.
pullboard spec answer <id> "<choice or text>"records your answer to a pending blueprint question, from your terminal or the view. An agent is refused.pullboard initputs new agent worktrees inside the repository, in.claude/worktrees. Boards without the setting keep them beside it; set"worktrees": "beside"inpullboard.jsonto choose.
Fixed
pullboard acceptsays how to land the item, andpullboard land --dry-runcatches a missing origin.- A gate blocked by an agent's sandbox stops with
SANDBOX_BLOCKED, asks the person, and names any test file the agent edited. - A waiver given after a gate stopped early runs the gate again.
- The view loads an item's full detail only when you open it.
- The page's Needs-you list comes from one place, so the panel, the list and the counts agree.
pullboard resumeon a board it cannot write refuses by name, with the step to fix it.pullboard resumenamespullboard lane addinstead of a script.- A person move is refused from a remote SSH shell whichever SSH variable the shell carries.
pullboard blueprint savereads back a question with three or more choices.
- v0.8.29Pullboard 0.8.292026-10-16 · 2026-10-16 23:08 UTC
查看更新说明
Blueprints, MCP, and refusals that tell you what to do next
0.8.28 never reached npm: one runner test hung on Linux CI, and that's fixed here. Everything listed under 0.8.28 in the changelog ships in this release too.
Added
- Blueprints.
pullboard blueprint add <name>files a blueprint's rules as draft spec rows for your approval, with its starter items.pullboard init --blueprint <name>starts a new board from one.pullboard blueprint saveturns your board's approved rules into a blueprint you can reuse.- The ten blueprints from the gallery are bundled.
pullboard mcp: an MCP server over stdio. An agent's own client can read the board and coordinate on it: board status, show an item, shout, capture an idea. It uses the same moves and refusals as the CLI, and it can never act as the person.pullboard runner add <host> --slots <n> --browser <n>: a test run waiting in the gate pool can run on another machine over SSH. A runner uses its own machine's browser slots. Nothing changes unless you add a runner.submitInvariantsinpullboard.json: with"submitGate": "landing",pullboard submitstill runs these test files on every submit.- The Roadmap shows the work to ship first, with shipped work below it.
Fixed
- Every refusal ends with a next step that works.
pullboard initsays when the gate command it found can't run on this machine. In an existing repo, the first gate afterinitsays to commit the filesinitwrote.pullboard init --helplists--blueprint.pullboard worktree <lane>from the main checkout creates and joins the worktree for the session that owns the checkout. Another session is still refused. Without a model, it names the--modelflag to add.pullboard addrefuses a build item in a lane that owns no files and names the lanes that do. A review item that names the work it reviews (--after <id>) is still accepted.- When
~/.pullboardcan't be written, for example inside an agent's sandbox, commands refuse withMACHINE_HOME_NOT_WRITABLE, name the folder and say how to fix it. - A declined spec row keeps its text, and the view shows the reason it was declined.
- A relay connection failure names its cause.
- The API refuses blank shout text the same way the CLI does.
- The README's worktree command includes
--model.
Corrected 16 Oct: an earlier version of these notes listed
gate.memoryFloorMB, which is not in 0.8.29 and ships in a later release, and an internal test-suite change. - Blueprints.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Pullboard enforces your intent and decisions. Build autonomously.
- Vision: what you want.
- Specification: your vision written down.
- 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.
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.
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.mdare the contract, frozen when an agent claims the work. - Doctrine.
DOCTRINE.mdholds 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 --exportwrites 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.
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 <what you are building>.
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 worktreemakes a lane worktree and prints a subagent's first instructions.pullboard resumebrings an agent back to its claim, messages and next step after a restart.pullboard nextclaims the next free item, never one someone else holds.pullboard runlets a lighter model build simple items unattended.- Claude Code gets skills. Codex and others read
AGENTS.mdorpullboard prompt <role>. The triage skill covers outside issues and pull requests, with replies and actions approved by the maintainer; other agents can read it withpullboard 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 exportwrites 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.