InPlan (Interactive Planning Editor) is a Markdown editor designed for collaboration between humans and coding agents, with the core goal of enabling AI-assisted software development to first form a collaborative, versionable specification document before writing code. It proposes the concept of "Planning-Driven Development (PDD)," turning requirements into a living document that evolves alongside the code, thereby reducing implementation drift, making refactoring safer, and keeping intent and code aligned.
Purpose InPlan is used to refine vague requirements into a true specification together with a coding agent before it starts writing code. Traditional AI coding workflows revolve around linear conversations, and as requirements change, context grows, and decisions accumulate, it becomes difficult to continuously track requirements, rationale, implementation status, and changes. InPlan makes requirements a document jointly maintained by humans and agents, preserving the plan together with its rationale, and making it reviewable in Git.
Main capabilities
- Humans and agents co-edit the same Markdown plan, similar to two people collaborating in the same shared document.
- The agent drafts the plan structure and raises open questions in the form of inline comments.
- You can comment on specific sentences and discuss with the agent in comment threads; after the agent revises the plan, you review the diff and apply it like a PR.
- Supports Auto-accept or Review of the agent's changes; supports two collaboration rhythms: Turn or Instant.
- Comments are stored in the document itself, so the plan and rationale travel together and remain reviewable in Git.
- The plan is pure Markdown plus a trailing HTML comment block, renderable in any Markdown viewer and cleanly diffable in code review.
- The editor provides several keyboard shortcuts (find, undo/redo, save, add comment).
How to use Requires Node.js 22 or higher. Install the CLI via npm, which bundles the desktop editor and agent skills:
npm install -g inplan
After installation, the inplan command is added to PATH, the bundled desktop editor can be launched via inplan open, and agent skills will be installed into detected coding agents (Claude Code, Pi, Codex); set INPLAN_NO_SKILL_INSTALL=1 can skip it, or run inplan install-skill later. Coding agents can also install it themselves.
Install from source (TypeScript monorepo, npm workspaces) for development. Packages include: @inplan/core (pure, embeddable editor and plan format logic), @inplan/cli (the inplan command, i.e. the agent-side loop), @inplan/app (the Electron editor, i.e. the human side).
You do not need to run inplan yourself; instead, your coding agent runs it. Two steps:
-
Install (once), which will also put the agent skill into your coding agent (Claude Code, Pi, Codex).
-
Use natural language to have your agent plan, for example:
Let's plan a tic-tac-toe game. Plan the auth rewrite with me.
The skill triggers on any "plan X" request: the agent writes <name>.plan.md, opens the inplan editor, and raises open questions as inline comments. You read the draft, answer in the editor (reply to comments, select option chips, or edit the text directly), the agent revises and replies accordingly, and so on until you end the session.
The agent drives the loop through the CLI: inplan open <file> (opens the editor and blocks until you act), inplan wait <file> (resumes after the next action), inplan signal <file> --done (signals that the plan may be ready, but the final decision is still yours). When installed from npm, inplan open launches the bundled desktop editor.
When running from a source checkout, set INPLAN_APP_CMD to point to the @inplan/app you built (otherwise the CLI runs in headless mode); you can run the editor separately with npm run dev -w @inplan/app.
The editor keeps its sidecar files (control log, spec baseline, backups) together under ~/.inplan/sidecars/<key> (<key> is derived from the document's absolute path; the root directory can be overridden with INPLAN_HOME or INPLAN_SIDECAR_DIR), do notmanually edit these files.
Document format A commented text fragment is an inline Markdown link whose href is the comment id; the comment itself is in a trailing HTML comment block (a JSON array):
- Fragment comment: exactly one text link in the body.
- Reply: carries parentId, no link.
- Document-level comment: "anchor": "doc", no link.
- Questions add "question": { "multiSelect": <bool>, "choices": [...] }; the human answers by selecting options (the answer records "selected": [...]).
Use cases
- Turn vague requirements into a collaborative spec before the coding agent writes code.
- AI-assisted software development that needs continuous tracking of requirements, rationale, implementation status, and changes.
- Want to manage requirement updates separately from bug fixes and maintain a reliable source of truth that neither humans nor AI agents can reliably remember.
- Let developers, product managers, and architects collaborate on the same plan.
Limitations InPlan is intended to support all combinations: operating systems (macOS and Windows), pacing (turn-based and real-time modes), agents (Claude Code, Codex, Pi), but is currently mainly developed and tested on macOS, turn-based mode, and Claude Code. Other operating systems, modes, and agents are wired up but less tested and may have rough edges.
License InPlan is dual-licensed: open source under AGPL-3.0-or-later; commercial use requires a separate license from CrazyIdeaStudio, Inc. for proprietary or SaaS use not subject to AGPL's copyleft, see LICENSING.md, contact licensing@inplan.ai. Contributions require signing a CLA, see CONTRIBUTING.md.
A hosted version is at inplan.ai; this repository is the open-source core you can run yourself.