Devplane

Local-first · One binary · MIT OR Apache-2.0

See every coding agent on your machine.
Know which one needs you.

Devplane is a control plane for AI coding agents. It watches every Claude Code session already running — terminal, VS Code, desktop, background — drives any agent that speaks the Agent Client Protocol, and turns “the agent says it’s done” into “your project’s checks agree”.

curl -LsSf https://github.com/hupe1980/devplane/releases/latest/download/devplane-installer.sh | sh

macOS (Apple Silicon), Linux and Windows. Other install paths.

$ devplane ls
8 projects · 23 sessions · 5 working · 2 need you · 4 idle · $4.18
12 quiet (nothing heard for hours) — devplane ls --all

saas  ·  4 issues · 2 PRs (1 needs you)
   7c         vscode     62%   $1.04   3m  Keep the legacy /v1/login route?

core-lib  ·  2 sessions  ·  1 PR
   a1         vscode     88%   $0.41   2s  Bash: cargo test --workspace
   4f         vscode     12%   $0.02  41m  waiting for a prompt

mobile
   04         cli         –    $0.12   8m  Permission: Bash rm -rf node_modules

Grouped by project, with the issues and pull requests waiting on you. Quiet editor tabs are counted, not listed — and any that starts asking for something joins the working set at once.

Five windows, five agents, and no idea which one is stuck

Claude Code’s own claude agents shows background sessions in one directory. The VS Code Agents window shows what VS Code started. Neither spans your terminal, your editor and the desktop app at once — and none of them knows what done means for your project.

Devplane sits above all of them, on documented interfaces only, and stays out of the way. It does not replace your editor, your tracker or your agent. It is the layer that spans them.

It works before you configure anything. Sessions are discovered from Claude Code’s own roster, so devplane ls is useful on first run with nothing installed. Connecting is what adds live state: cost, context usage, blocking, and the permission gate.

What it does

Sight

Every session on the machine, on one board, with state, cost, context percentage, worktree and pull request — and every open issue and pull request across your projects beside them. Hooks and OpenTelemetry for live state; the session roster for discovery. Your workflow does not change.

How observing works

Hands

Dispatch, prompt, answer permissions and cancel — for Claude Code, Codex, OpenCode and Gemini CLI out of the box, and any other agent that speaks the protocol by naming its command in one file.

Driving agents

Proof

Work outlives sessions. An isolated checkout, your own commands as the definition of done, failures handed back to the agent that wrote the code — bounded — and then a person is asked. An unearned claim of done never reaches review.

Verified done

Pipelines

Declared chains of runs: one agent implements, another reviews, a gate decides, and a person approves where the project says so. The cursor lives on the work item, so a crash resumes where it stopped instead of paying twice.

Agents checking agents

Permissions that are really yours

Claude Code’s rule syntax, implemented in full and resolved per repository. Deny always wins, and holds in auto mode too, where a classifier approves routine calls and no prompt ever appears. A rule that cannot match anything is refused rather than carried, because a deny rule that silently matches nothing reads as protection and is none. The board reads every repository’s rules back in the order they are evaluated, and writes none of them.

The rule syntax

An answer months later

Every verdict a rule reaches, every gate, every push and every pull request is appended to a decision log with the reason behind it. “Auto-approved” is not an answer. “Auto-approved by Bash(pnpm test *)” is.

The decision log

The loop

  1. SeeEvery session, grouped by project, on one board.
  2. DecideOne ranked inbox. Permissions, questions, red checks, spent budgets.
  3. DispatchAn agent in an isolated checkout, with the project’s rules.
  4. VerifyYour own commands decide. Failures go back, bounded.
  5. AccountEvery decision, with the rule or the check behind it.

Principles

Local-first

No account, no cloud relay, no service to run. Loopback only, and a token in a file only you can read. Nothing leaves the machine.

Documented interfaces only

Hooks, OpenTelemetry, the session roster, the Agent Client Protocol. No transcript scraping, no undocumented wire protocols.

Observe before own

A session Devplane did not start is first-class. Ownership is additive, never a prerequisite.

Work outlives sessions

Sessions crash and get handed to an editor. A pull request goes red hours later. Only work carries gates, evidence and history.

The model is never the authority

If the answer is a function of trusted inputs, it is a function. Attention, gates and policy never call a model.

An offered action is an implemented action

A button that cannot do what it says is the one failure a control plane cannot afford, because the whole product is a claim about what is true.

Try it on the machine you already have

One binary. It finds your sessions on the first run.

curl -LsSf https://github.com/hupe1980/devplane/releases/latest/download/devplane-installer.sh | sh && devplane ls

Quickstart Read the docs