Review the current caret session — pending/approved/rejected/expired plans plus recent errors — and help debug failures
Demo caret by presenting a short fake plan via ExitPlanMode
Gather a redacted diagnostics snapshot of this caret install and present it ready to paste into a bug report
⚠️ Prototype. caret is an early prototype and may change substantially over the next little while — interfaces, hooks, storage, and the install flow are all still settling. Expect rough edges and breaking changes.
caret is a Claude Code (and OpenCode) plugin that replaces the terminal plan-approval prompt with a local web UI. When your agent presents a plan, caret opens it in your browser so you can read it as rendered HTML, annotate passages inline (Google-Docs style), and approve or request changes — your feedback flows straight back to the agent. A single local daemon is shared across concurrent sessions, so several in-flight plans can be reviewed from one browser tab via a switcher.
Want to develop caret rather than use it? Start with CONTRIBUTING.md.
Review-UI screenshots coming soon.
caret needs bun on your PATH — it runs from a bun bundle — plus
the claude CLI you already have.
caret installs from its GitHub-based plugin marketplace. From inside Claude Code:
/plugin marketplace add macintacos/caret
/plugin install caret@caret
This fetches the published plugin — a self-contained bun bundle plus the prebuilt UI —
into Claude Code's plugin cache. No git clone, no compile step, no
claude --plugin-dir. Then restart Claude Code (or run /reload-plugins) and try it:
/caret:demo # presents a short fake plan to exercise the flow
Update with /plugin marketplace update caret (then /reload-plugins). Uninstall
with:
claude plugin uninstall caret@caret
claude plugin marketplace remove caret
caret also installs into OpenCode, as an auto-loaded plugin. The
script installer detects OpenCode (and, if you also have Claude Code, asks which to
install into — or set CARET_AGENTS):
curl -fsSL https://raw.githubusercontent.com/macintacos/caret/trunk/scripts/install.sh \
| CARET_AGENTS=opencode bash
The installer drops a caret.ts plugin plus the /caret:demo, /caret:discovery, and
/caret:debug commands into your OpenCode config dir, along with a package.json for its
one dependency (@opencode-ai/plugin) — it never touches your existing plugin config
array. Restart OpenCode once after installing (plugins load at startup), then
/caret:demo works. Approving or requesting changes flows back exactly as in Claude Code.
Update by re-running the installer; uninstall with
caret install-opencode --uninstall (which also removes that package.json entry). See
doc/ADVANCED.md for how the integration works.
Whenever your agent presents a plan — Claude Code's ExitPlanMode, or the Plan agent in
OpenCode — caret intercepts it and opens it in your browser instead of the terminal
prompt. There you:
A single local daemon serves every session, so concurrent plans queue up in one tab behind a switcher.
caret runs with sensible defaults and needs no configuration. To tune it, it reads an
optional config.toml and CARET_* environment variables (for example the daemon port or
the review timeout); logs are written raw by default. The full list of keys, their
defaults, and the environment variables is in
doc/ADVANCED.md.
caret discovery prints a one-shot, read-only diagnostics snapshot of your install —
ready to paste into a bug report (caret discovery --json for machine-readable output)./caret:debug reviews the current session's plans and recent errors.Details, plus how to scrub logs with caret redact, are in
doc/ADVANCED.md.
caret is macOS-first; Linux and Windows are best-effort. See
doc/ADVANCED.md for the details.
doc/ADVANCED.md — the deep reference: build-from-source,
architecture, the agent adapters, the full configuration surface, and the development
workflow.mise workflow,
and where tests live.doc/ — contributor rules-of-the-road, routed from CLAUDE.md.MIT — see LICENSE. Vendored third-party assets (the Lucide icons) are itemized in THIRD_PARTY_LICENSES.md (ISC).
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub macintacos/caretWrites a per-session state file so agentcomplete.nvim can detect Claude Code's external-editor prompt buffer and complete skills, commands, and files.
Memory compression system for Claude Code - persist context across sessions
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Editorial "Web Designer" bundle for Claude Code from Antigravity Awesome Skills.
Harness-native ECC plugin for engineering teams - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses