██████╗██╗ ██╗ █████╗ ██████╗ ██████╗ ███╗ ██╗ ██╔════╝██║ ██║██╔══██╗██╔══██╗██╔═══██╗████╗ ██║ ██║ ███████║███████║██████╔╝██║ ██║██╔██╗ ██║ ██║ ██╔══██║██╔══██║██╔══██╗██║ ██║██║╚██╗██║ ╚██████╗██║ ██║██║ ██║██║ ██║╚██████╔╝██║ ╚████║ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
Review diffs, CI, comments, context, and agent output in one place. Edit proposals. Approve what lands.
Generation went vertical. Human review didn't. Everything in the gap ships unread — bugs, slop, and "looks fine to me."
Charon is built for the gap — a review control room where agents do the legwork and nothing lands without your sign-off.
Follow a change end to end: spin it up, work the draft, keep it green, review what comes back, watch every agent, and tune the rules.
Describe the change. An agent branches, implements it in a fresh worktree, and opens the draft PR — the starting point for everything below.

Now shape it. Select lines, ask questions, or request edits — agents work in isolated worktrees and push to your branch.

Once it's open, Charon keeps it green. CI failures, conflicts, bot findings, and teammate reviews become fixes or findings — severity, confidence, and Apply on the diff.

Then return the favor. An agent drafts inline comments from the full diff; you edit, disable, change verdict, and submit once.

All of it, in the open. Every run live — plan, tool calls, prompt, model, and streamed output in one feed. Steer or stop any agent mid-run.

And every behavior above is yours. Each handler is a toggleable prompt with variables and /skill references. Context stays editable.

Charon drives coding agents over the Agent Client Protocol and supports the following harnesses:
Any ACP-speaking harness drops in behind the same event → { enabled, prompt } interface, and you can switch between them any time from Settings — each keeps its own model and reasoning preferences. Onboarding picks one and verifies the connection live.
The agent gathers context and drafts a decision. Nothing posts until you approve.
Tauri 2 with a Rust backend for HTTP, git, and process spawning; React + TypeScript front end. One window per repo, config stored locally.
Every handler is event → { enabled, prompt }. Prompts interpolate {pr-number}, {check-name}, {comment-body}, and /skill references.
Every run is an ACP session over stdio — tool calls, plans, and reasoning stream live, and you can steer or cancel mid-run. Fixes run in dedicated worktrees; reviews run read-only.
Works against github.com and GitHub Enterprise (/api/v3). REST plus a dash of GraphQL. Fine-grained PAT recommended.
Imported from ~/.cursor/commands and ~/.cursor/skills, selectable per stage. humanize ships built in.
Every push to main versions, tags, builds a universal DMG, and publishes it. Installed apps self-update with a one-click restart.