Quickstart
From nothing to a live board, a driven agent and a verified piece of work — in about five minutes.
1. See what is already running
devplane ls8 projects · 23 sessions · 5 working · 2 need you · 4 idle · $4.18
12 quiet (nothing heard for hours) — devplane ls --all
saas
◆ 7c vscode 62% $1.04 3m Keep the legacy /v1/login route?
core-lib · 2 sessions
● a1 vscode 88% $0.41 2s Bash: cargo test --workspace
○ 4f vscode 12% $0.02 41m waiting for a promptNo setup was needed for that: sessions are discovered from Claude Code’s own roster.
Rows are grouped by project, because that is the unit you think in — nine sessions on one repository are one line of context, not nine rows that differ by a hash. Sessions that have never reported anything are counted, not listed: a machine that has been running agents all week has editor tabs whose processes are still alive. One that starts asking for something joins the working set immediately.
devplane ls --all # including the quiet ones
devplane ls --project saas # one project; matches any part of the name
devplane ls --needs-you # only what is waiting on a human2. Add live state
Discovery is free. Cost, context usage, blocking and the permission gate need Claude Code to talk to Devplane:
devplane connect claudeThis merges hook entries and OpenTelemetry variables into your user settings, keeping a backup, and removes exactly those entries again on disconnect. It never touches your prompts: the flags that would put prompt or response text into telemetry are never set.
devplane doctor # is anything actually arriving?See Watching sessions for what each channel provides.
3. Open the board
devplane openOne page served from the daemon on loopback — no build step, no CDN, no account. It updates live, groups by project, and puts what needs you at the top. It is a document rather than a canvas: every state has a word as well as a colour, the sections are lists, and one polite live region says how many things need you — so it reads aloud, and it survives being screenshotted in greyscale.
| Key | What |
|---|---|
j k · enter | move · open what a session is saying |
tab · enter on a work row | what it changed — the diff, the gate’s commands, the agent’s account |
1–9 | pick one of the answers the agent offered |
y n · r | allow · deny a permission · reply |
? | why is this here — the decision log for the row under the cursor |
, | what is configured — this machine, and every repository’s devplane.toml read back |
g | every open issue and pull request, across every registered project — i and p switch |
⌘K | jump to any project, piece of work or session by name |
⌘N | dispatch work: prompt, project, kind, and the project’s own templates |
f · s · / | raise the editor window · snooze · search |
A permission also carries the rule that stops it being asked again, with the file to paste it into — see Permissions. Nothing here writes it.
The counts are the same door: 4 issues · 2 PRs in the header, and the same figures on a project heading, are buttons. A count you cannot open is a number telling you to go and look somewhere else.
⌘N opens with the cursor in the prompt and everything else already decided by the project, and it tells you what it will do before it does it. ⌘K matches by subsequence, so crlb finds core-lib.
4. Answer what needs you
devplane inboxThe inbox is derived from state, never stored, so it is correct after a restart. Every item carries at least one action, and every action is one the surface can actually perform — a permission on a session Devplane only watches offers Focus, because the dialog belongs to Claude Code and the honest thing to do is raise the window that has it.
5. Make “done” mean something
This is the part that earns the tool.
cd ~/code/saas
devplane trust . # once per repositoryTrust is deliberate: a headless agent runs that repository’s own hooks and MCP servers without asking. The command lists them — and any unpinned MCP server, shell-granting skill or overbroad [policy] rule — before it asks.
Write a definition of done:
# devplane.toml
[gates]
check = ["cargo clippy -- -D warnings", "cargo test"]devplane check # what will this file actually do?
devplane work start "fix the flaky login test" --kind bugwork start makes an isolated checkout at .claude/worktrees/<slug> on its own branch, runs your setup command, copies the files you named, and puts an agent in it. When the agent says it is finished, Devplane runs your commands. Green means a person should look; red means the failures go back to that same session, bounded, and then you are asked — with the same failing lines the agent was handed.
An agent that claims success without earning it reaches failed, never review.
devplane work list
devplane work show <id> # where it got to, what it cost, what the checks saidNext: Verified done in full.
6. See what GitHub is holding
devplane issuesas hupe1980 · what needs you first
saas
◆ #212 Login fails on Safari 17 bug · assigned to you
https://github.com/acme/saas/issues/212
○ #209 Document the rate limits docs
https://github.com/acme/saas/issues/209Every open issue and pull request across every registered project, read through your own gh. On the board, press g for the same two lists, or click the counts in a project heading. ◆ is what is waiting on you — an issue assigned to you, a review requested from you, your own pull request that is red, contested, or approved and unmerged. Those are inbox items too.
Nothing here writes to GitHub. Every action is a link.
7. Ask afterwards
devplane audit2026-09-13T18:04:11 daemon gh:pr.create https://github.com/acme/app/pull/142
↳ gates passed; opened as a draft
2026-09-13T17:58:40 policy agent:tool.use Bash: pnpm test -- --run
↳ Bash(pnpm test *)Every verdict names the rule or the check behind it. “Auto-approved” is not an answer.
Every command takes --json, and every command starts the daemon if it is not already running.
Something wrong or out of date? Edit this page.