██████╗██╗  ██╗ █████╗ ██████╗  ██████╗ ███╗   ██╗
██╔════╝██║  ██║██╔══██╗██╔══██╗██╔═══██╗████╗  ██║
██║     ███████║███████║██████╔╝██║   ██║██╔██╗ ██║
██║     ██╔══██║██╔══██║██╔══██╗██║   ██║██║╚██╗██║
╚██████╗██║  ██║██║  ██║██║  ██║╚██████╔╝██║ ╚████║
 ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝
The Review-First IDE

Review diffs, CI, comments, context, and agent output in one place. Edit proposals. Approve what lands.

▼ SCROLL

AI WRITES CODE FASTER THAN ANYONE CAN READ IT.

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.

REVIEW-FIRST WORKFLOW

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.

START FROM A PROMPT

Describe the change. An agent branches, implements it in a fresh worktree, and opens the draft PR — the starting point for everything below.

New draft PR view

DRAFTS ARE DIFFS

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

Drafts view

PRS STAY READY

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.

Open PRs view

OWN THE REVIEW

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

Review view

FULL RUN LOG

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.

Agents activity feed

PROMPTS ARE POLICY

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

Settings event catalog

BRING YOUR OWN AGENT

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.

AGENTS, REVIEWED

The agent gathers context and drafts a decision. Nothing posts until you approve.

charon · activity / boxcar/dispatch

LOCAL. PROMPTABLE. ACP.

Stack

Tauri 2 with a Rust backend for HTTP, git, and process spawning; React + TypeScript front end. One window per repo, config stored locally.

Events

Every handler is event → { enabled, prompt }. Prompts interpolate {pr-number}, {check-name}, {comment-body}, and /skill references.

Agents

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.

GitHub

Works against github.com and GitHub Enterprise (/api/v3). REST plus a dash of GraphQL. Fine-grained PAT recommended.

Skills

Imported from ~/.cursor/commands and ~/.cursor/skills, selectable per stage. humanize ships built in.

Releases

Every push to main versions, tags, builds a universal DMG, and publishes it. Installed apps self-update with a one-click restart.

Bring your own agent. Charon speaks ACP: Cursor, Claude Code, Codex CLI, opencode, or any command you configure. Contributions welcome.

REVIEW THE CHANGE

Free. Open source. macOS universal.