plannotator

backnotpropApache-2.0活跃维护 有专家点评

给编码 Agent 用的协作工作台,能规划、批注、审查代码,并把反馈一键回传给 Claude Code、Codex 等 Agent。

The workspace to stay in the loop and on top of agents - shape, decide, plan, annotate, review code, share with team, and send all feedback to agents with one click.

v0.28.61发布于 2026-11-10 22:33 UTC10,017star +132 / 7 天758fork同步于 2026-11-11 05:28 UTC

专家点评

上手难度:进阶更新于 2026-11-11

给 AI 编码代理加一层浏览器审阅界面,把批注和 diff 评论直接回传给代理

适用场景

  • 代理跑完 plan mode 产出方案时:在浏览器里逐段批注再一键回传,比在终端里读长文本、手打修改意见省事得多,终端里做这件事基本没法定位到具体段落
  • 审 PR/MR diff 时:本地改动和 GitHub PR、GitLab MR 走同一套批注界面,评论能直接进代理会话,不用在 GitHub 网页和终端之间来回粘贴
  • 多代理并行时:Inbox 汇总各会话的提问和消息,回复能回到发起会话,避免开一堆终端窗口轮询哪个代理在等你
  • 用 Jujutsu、Perforce 这类非 Git 主流工作流时:审阅层不绑死 Git,换别的 diff 审阅工具通常只认 Git

踩坑

  • 安装器只装二进制,代理侧还要按表格配插件或 hooks:Claude Code 要加 marketplace 再装插件并重启,Pi 走 pi install 而非安装器,Gemini CLI 有 0.36.0 版本下限。只跑完 curl 就以为接好了,会在代理侧看不到任何产出
  • issue 里反复出现包管理器分发(Homebrew 等)的请求,说明当前安装路径是官方脚本直装二进制;在需要统一软件源、做版本锁定的环境里,升级和回滚要自己管
  • 审阅会话的连续性被反复提为 feature request(live updates、agent replies、避免 eager submit_plan),说明当前交互模型偏向一次性提交,代理中途改计划时审阅端的同步行为要自己先验证清楚

同类对比

如果只需要在终端里看 diff 和留评论,不需要浏览器批注回传,用代理自带的 plan review 或常规 PR 审阅流程就够;它的价值集中在「批注要结构化地回到代理会话」这一环,不需要这环就没必要引入。

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://plannotator.ai/install.sh | bash
irm https://plannotator.ai/install.ps1 | iex
硬件要求按 README 说明

README 未说明硬件要求,仅说明支持 macOS、Linux、WSL 和 Windows PowerShell 安装

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

给 AI 编码代理做本地浏览器审阅台,批注计划、HTML 和代码后一键把反馈发回代理

给编码 Agent 用的协作工作台,能规划、批注、审查代码,并把反馈一键回传给 Claude Code、Codex 等 Agent。

核心能力

  • 通过代理的 hooks 和命令直接接入,代理产出自动在浏览器打开
  • 批注计划、规格、Markdown、HTML 等产物并回传反馈
  • 审阅本地改动或 GitHub PR、GitLab MR 的 diff 并留评论
  • 支持 Git、GitButler、Jujutsu、Perforce 等多种版本控制
  • Inbox 汇总多个代理的消息与提问,回复直达发起会话

容易踩的坑

安装器只装二进制,多数代理还需按表格额外配置插件或 hooks;Claude Code 需先添加 marketplace 再安装插件并重启;Pi 不走安装器,改用 pi install npm:@plannotator/pi-extension;Gemini CLI 需 0.36.0 以上版本

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.28.61
  1. v0.28.61最新正式版2026-11-10 · 2026-11-10 22:33 UTC

    Follow @plannotator on X for updates

    ReleaseHighlights
    v0.28.60Click a word to highlight it, a one-time Themes dialog, Settings → Rows rebuilt, tell your agent how you want your rows, starred threads as pills above the list, a pill for new messages out of view, a half-circle face picker with ten Glass colours, a new phone sidebar and reply box
    v0.28.59A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
    v0.28.58Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
    v0.28.57Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
    v0.28.56Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
    v0.28.55Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
    v0.28.53Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
    v0.28.52Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
    v0.28.51Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
    v0.28.50A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
    v0.28.49A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate
    v0.28.48Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox

    What's New in v0.28.61

    TL;DR

    • Fixed: Updates now update the Claude Code plugin too
    • New: An agent's chosen face shows on every icon of it
    • New: Filter the Inbox list by pull request state
    • Fixed: Modern dark shows section bands and the Reply button
    • Fixed: One conversation no longer shows as two agents

    0.28.61 is a small patch release. Its main fix makes an update bring the Claude Code

  2. v0.28.602026-11-10 · 2026-11-10 11:51 UTC
    查看更新说明

    Follow @plannotator on X for updates

    ReleaseHighlights
    v0.28.59A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
    v0.28.58Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
    v0.28.57Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
    v0.28.56Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
    v0.28.55Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
    v0.28.53Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
    v0.28.52Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
    v0.28.51Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
    v0.28.50A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
    v0.28.49A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate
    v0.28.48Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
    v0.28.47Board lanes, Settings → Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards

    What's New in v0.28.60

    TL;DR

    • New: Click a word to highlight it, in plan review, annotate and documents opened from an Inbox thread
    • New: A one-time Themes dialog, shown about 15 seconds after the Inbox opens
    • New: Settings → Rows is rebuilt: your own list stays in view, plain choices, Undo, a Dense look and a Pull requests switch
    • New: Tell your agent how you want your rows, from Settings → Rows or with plannotator inbox rows
    • New: Starred threads as pills above the list, when you turn on "Keep starred above the list"
    • New: A pil
  3. v0.28.592026-11-10 · 2026-11-10 02:17 UTC
    查看更新说明

    Follow @plannotator on X for updates

    ReleaseHighlights
    v0.28.58Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
    v0.28.57Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
    v0.28.56Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
    v0.28.55Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
    v0.28.53Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
    v0.28.52Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
    v0.28.51Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
    v0.28.50A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
    v0.28.49A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate
    v0.28.48Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
    v0.28.47Board lanes, Settings → Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
    v0.28.46Snooze a thread, Settings → Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository owner

    What's New in v0.28.59

    TL;DR

    • Changed: The Agents section in the sidebar is quieter: a plain heading when closed, no panel behind it
    • Changed: Machine names show only when agents run on more than one machine
    • Changed: Agent icons are always gently alive, and lean toward your pointer

    0.28.59 is a small release that finishes the sidebar's Agents section, which arrived in 0.28.58 in an earlier form. It has 4 PRs, all from @backnotprop. One is a test fix, and one changes nothing you see yet.

    Plannotator Inbox

    A quieter Agents section

    Closed, Agents is now a plain heading row like Project

  4. v0.28.582026-11-10 · 2026-11-10 01:02 UTC
    查看更新说明

    Follow @plannotator on X for updates

    ReleaseHighlights
    v0.28.57Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
    v0.28.56Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
    v0.28.55Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
    v0.28.53Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
    v0.28.52Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
    v0.28.51Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
    v0.28.50A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
    v0.28.49A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate
    v0.28.48Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
    v0.28.47Board lanes, Settings → Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
    v0.28.46Snooze a thread, Settings → Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository owner
    v0.28.45Plannotator Modern theme, a thread panel view, session names in the To picker, thread links open in place, comment on diagram parts

    What's New in v0.28.58

    TL;DR

    • New: Start Codex from New message
    • New: An Agents section in the sidebar, in place of Machines
    • New: Start an agent in a folder on any drive
    • New: Play audio attachments and comment at a moment
    • New: Claude Code's Plannotator tools work on Windows

    New message can now start Codex, and it can start an agent in a folder on any drive, not only under your home folder. The sidebar's Machines section is now Agents, a list of the agents that are running. Audio attachments play in the Inbox and take comments, questions inside an attached Markdown file can be answered, and Claude Code's Plannotator tools now work on Windows.

    0.28.58 ha

  5. v0.28.572026-11-09 · 2026-11-09 19:26 UTC
    查看更新说明

    Follow @plannotator on X for updates

    ReleaseHighlights
    v0.28.56Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
    v0.28.55Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
    v0.28.53Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
    v0.28.52Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
    v0.28.51Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
    v0.28.50A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
    v0.28.49A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate
    v0.28.48Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
    v0.28.47Board lanes, Settings → Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
    v0.28.46Snooze a thread, Settings → Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository owner
    v0.28.45Plannotator Modern theme, a thread panel view, session names in the To picker, thread links open in place, comment on diagram parts
    v0.28.44The iPhone keyboard no longer moves the Inbox, pictures stay clear of the option card, What's new over your tailnet

    What's New in v0.28.57

    TL;DR

    • New: Pin artifacts, and see every artifact on one page
    • New: Filter the list by project, date or agent
    • New: A thread shows its pull requests and their state
    • New: Choose what the sidebar shows, and in what order
    • Changed: Ask AI starts from Side in the selection bar

    You can now pin a thread's files and pictures and find them all on a new Artifacts page. The list gets a filter, the sidebar can be rearranged, and a thread shows the pull requests its agent is working on. Attachments download from a right-click, the list marks what waits on you with one question mark, and the What's new page opens on each release's TL;DR.

    0.28.57 has 18 PRs, all from @backnotprop, plus #2938, which merged ten o

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Plannotator

    ⭐️ NEW: Plannotator Inbox is the missing layer between you and managing multi-agent work.

    Plannotator is a local, browser-based review surface for AI coding agents: Claude Code, Codex, Copilot CLI, Gemini CLI, OpenCode, Kiro, Droid, Amp, DeepSeek Harness, and Pi.

    It plugs directly into your agent through its hooks and commands. When the agent proposes a plan, html, or finishes writing code, the work opens in your browser and you mark it up, comment, and send feedback directly to the agent for it to act on it.

    Review documents, plans, and agent messages

    Annotate plans, specs, messages, html, then send the feedback to your agent.

    Code Review

    Review local changes or remote PRs. Comment on diffs, suggest code. Your comments go back to the agent. Works with Git, GitButler, Jujutsu (jj), Perforce (p4), GitHub, and GitLab.

    Annotate HTML Artifacts

    Plannotator Inbox

    The Plannotator Inbox is one local window where your agents leave you messages, questions, files, and guided reviews while they keep working. Answer a question with a click, annotate a file, and press Send when you can. Nothing holds an agent session open while you do, and your reply goes back to the session that asked.

    plannotator inbox
    

    Claude Code, Pi, and OpenCode connect through Plannotator's plugins, and your replies arrive as their next turn. Any other agent reaches it over MCP with plannotator inbox mcp, and plannotator inbox --help is the guide an agent reads. Watch the demo · More on the Inbox · Docs

    Herdr Annotate: Plannotator in the Terminal

    Herdr Annotate brings Plannotator-style review to the terminal: annotate terminal text, review whole Markdown documents and your coding agent's replies inside Herdr, and send the feedback straight back to the agent as its next message. Works with Claude Code, Codex, Pi, Copilot CLI, and Droid replies. Annotations are saved in the Plannotator data directory, so terminal reviews and app reviews compound.

    herdr plugin install plannotator/herdr-annotate
    

    Prefer it standalone? Plannotator TUI powers the document review and runs without Herdr: brew install plannotator/tap/plannotator-tui.


    Commands

    On Codex, swap the slash commands for !plannotator … (e.g. !plannotator review) or the $plannotator-* skills.

    Annotate

    /plannotator-annotate README.md                  # Local markdown file
    /plannotator-annotate src/                       # Browse and annotate files in a folder
    /plannotator-annotate https://docs.rs/…          # Fetch and annotate any URL
    /plannotator-annotate report.html --render-html  # Render HTML as-is instead of converting
    /plannotator-last                                # Annotate the agent's last message
    

    Need a realistic document to try? Copy the product requirements document template and filled example as Markdown.

    Code review

    /plannotator-review                    # Review uncommitted changes
    /plannotator-review <github-pr-url>    # Review a GitHub pull request
    /plannotator-review <gitlab-mr-url>    # Review a GitLab merge request
    plannotator review --gitbutler         # Review an active GitButler workspace
    plannotator review --patch-file reading.diff # Review a static caller-supplied unified diff
    

    GitButler users can review the whole workspace, one stack, or one branch layer. See the GitButler workflow guide.

    Plan mode

    No command needed. Plan mode is wired in through each harness's hooks. Any time your agent creates a plan, the markdown review surface opens for you.

    CLI

    plannotator sessions                   # List active Plannotator sessions
    plannotator sessions --open 1          # Reopen a session in the browser
    plannotator archive                    # Browse saved plan decisions read-only
    

    Privacy and network behavior

    Plannotator does not collect usage telemetry or analytics. Plans, diffs, annotations, drafts, history, and configuration stay local by default.

    Each plan review, annotate, archive, share-portal, and code-review app surface checks GitHub for the latest Plannotator release when it loads. This sends no plan or review content and gives the Plannotator project owner no usage analytics, although GitHub receives an ordinary request. There is currently no opt-out setting for the release check. Local Git code review can also query the configured origin with git ls-remote to detect the default branch and a stale baseline; it does not send the local diff. That remote query runs when the review opens, when the page loads its diff, when you switch the diff type or base (including the "Diff out of date · Refresh" button), and when you press Fetch — never on a timer, so an idle review page makes no network calls. Turn it off entirely with plannotator review --no-git-remote-check, PLANNOTATOR_GIT_REMOTE_CHECK=0, or { "gitRemoteCheck": false } in ~/.plannotator/config.json; the compare target then comes from local refs only and the "behind GitHub" banner never appears.

    Content leaves the local workflow only when a network feature needs it:

    • URL annotation fetches the requested site, through Jina Reader by default for public pages or directly when Jina is disabled or unavailable.
    • GitHub and GitLab review uses your authenticated CLI and Git remote to retrieve PR or MR data.
    • Ask AI and review agents send the selected question and relevant plan, document, repository, or diff context to your configured provider. When Ask AI is answered by the agent session that opened Plannotator ("Ask this session"), the question goes to that session instead.
    • Sharing sends the complete link to whoever or whatever service you use to deliver it. Encrypted short links upload ciphertext to the paste service.
    • Workspaces is a separate hosted product, so the open source app's local-storage model does not apply to content placed there.

    The privacy policy documents these boundaries and the hosted website and waitlist data.


    Link sharing

    Open source asynchronous link sharing remains available for compatibility but is moving to deprecated support. Workspaces is the primary direction for team sharing. No removal date has been announced.

    Share a plan with a teammate and they can annotate it themselves. Import their feedback and send it straight back to your agent.

    Small markdown shares are compressed into the URL fragment. The fragment is not included in the browser's request to the share portal, but it is not encrypted. Anyone or any messaging service with the complete link can read the shared content. The portal host still receives ordinary request metadata.

    Large markdown and raw HTML shares use a short-link service. The share payload is encrypted with AES-256-GCM before upload, the server stores only ciphertext, and the key is kept in the URL fragment rather than sent in the paste request. Anyone with the complete link can decrypt it. Hosted pastes expire after 7 days.

    Same model as PrivateBin. The paste service is self-hostable.

    Sharing can be disabled entirely with PLANNOTATOR_SHARE=disabled.

    Workspaces is the primary path for hosted team collaboration.


    Install

    One installer covers almost every agent. It installs the plannotator binary, auto-detects your installed agents, and configures hooks, skills, and slash commands for each:

    # macOS / Linux / WSL
    curl -fsSL https://plannotator.ai/install.sh | bash
    
    # Windows PowerShell
    irm https://plannotator.ai/install.ps1 | iex
    

    The installer downloads the binary from GitHub Releases. A full install can also contact GitHub for release resolution and agent files, Ataraxy-Labs/sem for the optional sem sidecar, and npm for Pi, selected extra skills, or the managed agent-terminal runtime. Pinning --version skips only GitHub API release resolution, not the release download. See the privacy policy for the complete network boundaries.

    Want just the binary and nothing else? Pass --minimal (or export PLANNOTATOR_MINIMAL=1) to install only the plannotator binary to ~/.local/bin, skipping every skill, hook, slash command, and per-agent config:

    curl -fsSL https://plannotator.ai/install.sh | bash -s -- --minimal
    

    Then finish the step for your agent:

    AgentAfter the installerDetails
    AmpCopy plannotator.ts into ~/.config/amp/plugins/, then plugins: reload. Workflows live in the command palette.README
    Claude Code/plugin marketplace add backnotprop/plannotator, then /plugin install plannotator@plannotator. Restart Claude Code.README
    CodexNothing. Plan review is enabled automatically via Codex's experimental Stop hook (macOS/Linux/WSL; on native Windows, Codex hooks are experimental and the installer prints manual setup steps). $plannotator-review, $plannotator-annotate, and $plannotator-last skills included.README
    Copilot CLI/plugin marketplace add backnotprop/plannotator, then /plugin install plannotator-copilot@plannotator. Restart. Plan review activates in plan mode (Shift+Tab).README
    DeepSeek HarnessAdd @plannotator/dsh on DSH's Plugins page, or run dsh plugin --profile <profile> add @plannotator/dsh. Plan review opens on exit_plan_mode. The plugin adds /plannotator-review, /plannotator-annotate and /plannotator-last, which open without blocking the session.README
    Droiddroid plugin marketplace add https://github.com/backnotprop/plannotator, then droid plugin install plannotator@plannotator. Commands only, no plan interception yet.README
    Gemini CLINothing. The hook, policy, and slash commands are configured automatically. Requires Gemini CLI 0.36.0+.README
    Kiro CLINothing. Skills and an example agent are installed automatically. Try kiro-cli chat --agent plannotator.README
    OpenCodeAdd "plugin": ["@plannotator/opencode@latest"] to opencode.json. Restart OpenCode.README
    PiSkip the installer. Just pi install npm:@plannotator/pi-extension. Start Pi with --plan, or toggle with /plannotator-plan-mode.README
    T3 CodeFor Claude threads in T3: run plannotator t3 --help and follow its two steps (sign in to T3 once, add the --t3 MCP entry). Your Inbox replies then arrive in the thread as new turns.README

    Updating: run the installer again for the binary and slash commands. It also updates an installed Claude Code plugin when the claude command is on your PATH (opt out with --skip-claude-plugin); otherwise run claude plugin marketplace update plannotator, then claude plugin update plannotator@plannotator, then restart Claude Code (refreshing the marketplace alone does not update the plugin). Pi: pi update --extensions (a plain pi update updates only Pi).

    On Claude Code 2.1.287 or newer, plan review, code review and annotate don't make Claude wait: Claude ends its turn and your decision arrives later as a message. Set PLANNOTATOR_CLAUDE_MOD=0 to go back to the classic flow.

    Full walkthroughs live in the installation docs.

    Uninstall

    The safe default removes recognized Plannotator-installed components and keeps your local plans, history, drafts, guides, and settings:

    plannotator uninstall
    

    Use --purge for a full removal of known local Plannotator data as well:

    plannotator uninstall --purge
    

    Purge requires typing purge at the prompt and explains that the data is local-only: it is not stored on a Plannotator server and cannot be recovered. For automation, pass --yes (or -y); non-interactive removal refuses to run without it. Use --dry-run to preview recognized work without making changes. Host integrations are always part of uninstall. If a broken or unavailable host prevents safe cleanup, the command names the blocking plugin manager or configuration, gives exact manual cleanup instructions, and stops before deleting the binary. Complete that cleanup and rerun uninstall. It also keeps the binary when an agent's config file can't be read (another tool's too), or when a hook it did not install still runs Plannotator. The error names the file, the tool, and what to do. A plannotator-inbox entry you added yourself, or a Claude Code or Droid plugin installed for one project, is named with how to remove it and does not keep the binary. These mechanics keep the ordinary confirmation default-negative, make the irreversible outcome require a stronger explicit word, and still give package managers and scripts a conventional non-interactive flag.

    The command covers the conventional macOS, Linux, WSL, and Windows binary locations; the managed sem sidecar and agent-terminal runtime; installer skills, commands, hooks, policies, caches, and recognizable Amp/Kiro files; and detected Claude Code, Copilot CLI, Droid, Pi, and VS Code installations through their host CLIs. Shared JSONC settings are edited surgically, while strict JSON updates preserve the file's indentation, line endings, and trailing-newline style. Custom or unrecognized files, separately installed optional skills, project-local integrations, external plan-save locations, and invalid configs are preserved (malformed host config is a fail-safe error). If cleanup reports an error, the CLI remains available for a safe retry, and its Windows PATH entry is retained or restored when possible. If PATH restoration itself fails, the output gives the full CLI path for retry and asks for manual PATH repair. For safety, purge refuses filesystem roots, the home directory, the shared temporary directory, symlinked data directories, and non-directory data paths. Existing paths are compared by filesystem identity, so case aliases, symlinks, hardlinks, and bind mounts cannot bypass the root/home/ancestor checks. That identity and every containment guard are revalidated after awaited host commands, immediately before the synchronous data-removal block; a replaced data directory is refused without touching either the old or replacement data. If your dedicated data directory is symlinked, point PLANNOTATOR_DATA_DIR at its resolved target and retry.

    If you installed only the standalone Pi extension and do not have the plannotator CLI, use pi remove npm:@plannotator/pi-extension.

    Add to ~/.claude/settings.json:

    {
      "hooks": {
        "PermissionRequest": [
          {
            "matcher": "ExitPlanMode",
            "hooks": [
              {
                "type": "command",
                "command": "plannotator",
                "timeout": 345600
              }
            ]
          }
        ]
      }
    }
    
    curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version vX.Y.Z
    
    & ([scriptblock]::Create((irm https://plannotator.ai/install.ps1))) -Version vX.Y.Z
    

    Try it

    The fastest way to see what Plannotator does is to invoke it yourself, right now, from your agent:

    /plannotator-last                   # annotate the agent's last reply
    /plannotator-review                 # review your current diff, PR-style
    /plannotator-annotate report.html   # annotate any file, folder, or URL
    

    (Slash commands in most agents; $plannotator-* skills in Codex, command palette in Amp.)

    Plan review needs no command at all. The next time your agent proposes a plan, it opens in your browser automatically.


    How it works

    Plan review

    Agent calls ExitPlanMode
      -> PermissionRequest hook fires
      -> Local server reads plan from hook input
      -> Browser opens with review UI
      -> You annotate and approve/deny
      -> Approve: agent proceeds
      -> Deny: structured feedback sent to agent
      -> Agent revises, plan diff shows what changed
    

    Code review

    You run /plannotator-review
      -> git diff captures changes (or PR fetched by URL)
      -> Browser opens with diff viewer
      -> Annotate lines, stage/unstage files
      -> Send feedback: returned to agent session
      -> Approve: "LGTM" sent
    

    Integrations

    VS Code: Open plans in editor tabs, view diffs inline, add annotations from the editor gutter. Install from the VS Code Marketplace.

    Obsidian: Auto-save approved plans to a vault with YAML frontmatter, tags from the plan title, and backlinks for graph connectivity. Configure in Plannotator's Settings panel.

    Bear: Save plans as Bear notes with nested tags and project metadata.

    Notion: Save plans as Markdown child pages under a shared Notion page. Set NOTION_TOKEN in the environment that starts Plannotator, then configure the parent page in Settings.

    GitHub / GitLab: Pass any PR or MR URL to /plannotator-review and review it with the full diff viewer, annotations, and file tree.


    Remote / SSH / devcontainer

    Plannotator auto-detects SSH sessions and switches to fixed port 19432. For a different port, or in a devcontainer or Docker:

    export PLANNOTATOR_REMOTE=1
    export PLANNOTATOR_PORT=9999  # forward this port
    

    VS Code devcontainers forward the port automatically (check the Ports tab). For raw SSH, add this to ~/.ssh/config, using your PLANNOTATOR_PORT value if you set one:

    Host your-server
        LocalForward 19432 localhost:19432
    

    In remote mode the server listens on every interface (0.0.0.0) with no login, so anyone who can reach the port can use it, even when you use an SSH tunnel. Keep the port closed to networks you don't trust.


    Security

    Every released binary ships with a SHA256 sidecar. SLSA provenance attestations are available from v0.17.2. The current release workflow also attaches a CycloneDX JSON SBOM, evaluates it with a fresh Grype database before anything is attested or published, and creates a GitHub/Sigstore SBOM attestation for the shipped binaries and npm tarballs.

    The SBOM is intentionally labeled as a release-wide Syft inventory of the monorepo's locked build inputs and dependencies. It is not an exact per-binary runtime inventory: Bun standalone executables do not expose their bundled JavaScript package metadata to Syft. The canonical installation and verification docs cover the existing installer path; the exact new SBOM commands are included below and must be copied to that Mintlify page before the first SBOM-enabled release.

    The release gate rejects scanner-side ignored matches and treats unknown applicability conservatively as runtime when evaluating CISA KEV and fixable Critical findings. Its explicit Grype configuration, complete JSON results, database status, and repository policy decision remain available as workflow evidence.

    To verify a released Linux x64 binary, its existing provenance, and the new SBOM evidence directly:

    tag=vX.Y.Z
    version="${tag#v}"
    mkdir -p /tmp/plannotator-release-verify
    gh release download "$tag" --repo backnotprop/plannotator \
      --pattern 'plannotator-linux-x64*' \
      --pattern "plannotator-${version}-release-sbom.cdx.json*" \
      --dir /tmp/plannotator-release-verify
    
    (cd /tmp/plannotator-release-verify && sha256sum --check plannotator-linux-x64.sha256)
    (cd /tmp/plannotator-release-verify && sha256sum --check "plannotator-${version}-release-sbom.cdx.json.sha256")
    
    gh attestation verify /tmp/plannotator-release-verify/plannotator-linux-x64 \
      --repo backnotprop/plannotator --source-ref "refs/tags/$tag" \
      --signer-workflow backnotprop/plannotator/.github/workflows/release.yml \
      --predicate-type https://slsa.dev/provenance/v1
    
    gh attestation verify /tmp/plannotator-release-verify/plannotator-linux-x64 \
      --repo backnotprop/plannotator --source-ref "refs/tags/$tag" \
      --signer-workflow backnotprop/plannotator/.github/workflows/release.yml \
      --predicate-type https://cyclonedx.org/bom
    

    These are separate claims over the same artifact digest: provenance identifies its builder/source/workflow, while the CycloneDX predicate describes the release-wide inventory. The release runbook also canonicalizes the downloaded SBOM and attested predicate with jq -S and compares them.

    To verify on install:

    curl -fsSL https://plannotator.ai/install.sh | bash -s -- --verify-attestation
    

    Requires the gh CLI, but no login: the installer fetches the attestation bundle from GitHub's public attestations API and verifies it with gh attestation verify --bundle (the extraction needs node, python3, or jq on PATH; gh's authenticated fetch is the fallback). Can also be set persistently in ~/.plannotator/config.json:

    { "verifyAttestation": true }
    

    Installer verification remains opt-in and verifies SLSA build provenance; normal installation does not require gh. See the canonical installation docs for details.


    Configuration

    Settings are saved in cookies (not localStorage) because each hook invocation runs on a random port. You can also set options through environment variables or ~/.plannotator/config.json.

    Optional Vim controls

    Plan and annotate views offer a default-off Vim controls profile under Settings → Vim. Once enabled, focus the document and use j / k to move one rendered block at a time. After l refines into a semantic level, j / k move among sibling rows, cells, or inline targets; h moves back to the containing target. Refining past the deepest target enters text. v starts characterwise Visual selection and V selects whole blocks. Space opens the normal annotation toolbar; c, d, m, and t select comment, redline, markup, and label actions. The same semantic target graph drives pointer Pinpoint and keyboard navigation. Press ? in the document for the contextual key reference. Inputs, dialogs, editors, Tab, and all pointer interactions retain their native behavior. The document takes focus automatically when the page is otherwise neutral; press Escape from app chrome to return to it without clicking. An additional default-off Vim HUD toggle appears beneath Vim controls. It uses the product-demo styling for the live target reticle and navigation context. Its bottom-right Key panel is independently hideable while the reticle remains active; ? still opens the complete key map on demand. The panel shows recent handled keys, the current block/line/word/Visual phase, and the command meaning without capturing text typed into comments or other controls. See Vim controls for the interaction contract and implementation architecture.

    VariableDescription
    PLANNOTATOR_REMOTE1/true for remote mode, 0/false for local, unset for SSH auto-detection
    PLANNOTATOR_PORTFixed port (default: random locally, 19432 remote)
    PLANNOTATOR_BROWSERCustom browser to open plans in. none (also false, 0, off, no, true, 1, :) opens no browser at all; the session URL is always printed.
    PLANNOTATOR_AIdisabled to disable Ask AI, Review Agents, and Guided Review; the annotate agent terminal is separate
    PLANNOTATOR_SHAREdisabled to turn off URL sharing
    PLANNOTATOR_SHARE_URLCustom base URL for share links (self-hosted portal)
    PLANNOTATOR_PASTE_URLBase URL of the paste service API
    PLANNOTATOR_ORIGINOverride agent detection: claude-code, amp, droid, opencode, codex, copilot-cli, gemini-cli, kiro-cli, pi
    PLANNOTATOR_JINA0/false to disable Jina Reader for URL annotation
    JINA_API_KEYJina Reader API key for higher rate limits
    PLANNOTATOR_DATA_DIRBase directory for Plannotator-managed files (plans, history, drafts, config.json). Default: ~/.plannotator; if that directory doesn't exist and $XDG_DATA_HOME is set to an absolute path, $XDG_DATA_HOME/plannotator is used instead (also when ~/.plannotator holds none of Plannotator's data but the XDG folder does). plannotator data-dir prints the folder in use

    Plannotator-managed files live under ~/.plannotator by default. Some UI preferences are stored in functional browser cookies. To relocate the files (for example, for an XDG-clean home):

    export PLANNOTATOR_DATA_DIR=~/.local/share/plannotator
    

    Development

    bun install
    
    bun run dev:hook       # Plan review server
    bun run dev:review     # Code review editor
    bun run dev:marketing  # Marketing site (plannotator.ai)
    bun run dev:vscode     # VS Code extension (watch mode)
    

    Build

    bun run build          # Main targets (hook + opencode + dsh)
    bun run build:hook     # Single-file HTML for the hook server
    bun run build:review   # Code review editor
    bun run build:opencode # OpenCode plugin
    bun run build:dsh      # DeepSeek Harness plugin
    bun run build:vscode   # VS Code extension
    

    Build order matters. The hook build copies pre-built HTML from apps/review/dist/. If you change UI code in packages/ui/, packages/editor/, or packages/review-editor/, rebuild the review app first:

    bun run --cwd apps/review build && bun run build:hook
    

    Test the plugin locally:

    claude --plugin-dir ./apps/hook
    

    Full binary build:

    bun run --cwd apps/review build && bun run build:hook && \
      bun build apps/hook/server/index.ts --compile --outfile ~/.local/bin/plannotator
    

    License

    Copyright 2025-2026 backnotprop

    Dual-licensed under Apache 2.0 or MIT at your option.

    Contributions are dual-licensed under the same terms unless you explicitly state otherwise.