vexar
v0.25.1 · macOS · Apple Silicon

A cockpit for the agents you already run

Running the agents is the easy part.

Five worktrees, five agents, five diffs. The work that decides whether any of it ships is reading them — and that is the part no tool does for you. Vexar is built around that half.

Signed and notarized by Apple. No xattr, no security prompt. It runs your CLIs — claude, codex, gemini, opencode — on your existing plans.

converge · feat/quote-excel-live-formulas 3 rounds
Round B/H/M/L Fixed Recur Verify
1 0/2/3/4 7 0 fail
2 0/0/2/1 2 1 pass
3 0/0/1/0 0 0 pass
needs-decision Tests pass. One finding the loop would not apply itself is waiting on you.

A converge run keeps a ledger, and the ledger is the point. Round 2's recurrent 1 is a fix that did not hold — vexar names the function it came back in. And it will not call a branch clean while a question is open, which is why this run ended needs-decision rather than converged.

Not an agent

It runs yours.

There is no chat here, no model picker, no reimplementation of tools your CLI already ships. Vexar spawns the binary you already use, in a terminal, in its own worktree — and owns everything around it that a terminal cannot.

Worktree isolation

Every session gets its own git worktree on its own branch. Five agents editing one repo never see each other's half-written files, and converge refuses to run on a worktree whose agent has a turn in flight.

A fleet, ranked

Not a grid of terminals you cannot read at 2×. One table, ordered by who needs you: blocked on a permission prompt nobody has seen, idle with changes you have not ruled on, running. Read from the agent's own hook events, not from guessing at process state.

The merge gate

The diff you are about to merge — merge-base → working tree, the same range the merge uses — with a reviewer's findings anchored to the lines they are about. Merge names the branch it writes to before it writes, and hands back the sha to undo it.

Your identity, per project

Review and fix run as the session's own ~/.claude profile, not one global setting. A client's work reviewed on a client's credentials, without remembering to switch.

The merge gate

The diff, and what a reviewer made of it.

The terminal never leaves the screen — the diff and the ledger slide in beside it. Findings are anchored to the lines they are about, and Fix hands them to the agent that wrote the code, in the pane it is already running in.

Vexar's merge gate: a session's terminal on the left, the diff beside it with the reviewer's findings anchored to the changed lines. Vexar's merge gate in its light theme: a session's terminal on the left, the diff beside it with the reviewer's findings anchored to the changed lines.
Panels, not tabs. A tab would replace the terminal to show you the diff, which unmounts the pty the agent is running in — so the diff arrives beside it instead, behind a grip you can drag.

Converge

Review, fix, verify — until it stops honestly.

An agent that reviews its own work is grading its own paper. Converge puts a fresh reviewer against the diff, hands findings back to the agent that wrote it, and runs your project's real checks before anything is called done.

01

Review the diff, with a context that did not write it

Every round reviews with a fresh context. The one that applied a fix is biased toward judging it correct, so it is never the one that certifies it.

02

Route each finding

Mechanical fixes go to the agent. Anything serious and uncorroborated, or in a category you have gated, goes to a queue for you — and a finding you have already refused is never raised again.

03

Verify with the project's own checks

Your lint, tests and build — discovered, or declared in a committed vexar.toml when discovery is not enough. A timeout is not a pass, and "no checks found" is not a pass either.

04

Stop, and say which kind of stop it was

converged means the reviewer found nothing and your checks pass. needs-decision, stalled, tripped, capped all mean something else, and the ledger says which. A finished run and a clean branch are different claims.

What the agent can see

A pane knows about one worktree. These tell it the rest.

An in-process MCP server exposes vexar's own state back to whatever is running in the terminal. Read-only, on purpose: they answer questions, they never approve, merge or discard. An agent that can clear its own gate is not a gate.

cockpit_sessions

Which branches exist, what state each is in, and which ones are waiting on a human.

cockpit_ledger

What a converge run did, round by round — including which fix did not hold, named by file and symbol.

cockpit_findings

The review it is being told about, so it can re-read the findings instead of scrolling for them.

cockpit_decisions

What you refused before, and the reason you wrote down at the time.

Get it

Download, drag to Applications, open.

Signed with a Developer ID and notarized by Apple, with the ticket stapled — so it opens on a machine that has never seen it, offline, with no terminal workaround.

Worth knowing before you download

Apple Silicon only. There is no Intel build. If you are on an Intel Mac this will not run, and it is better to say so here than after the download.

You bring the agents. Vexar spawns CLIs you have already installed and authenticated. It does not ship a model, proxy your tokens, or add a plan of its own.

The reviewer costs what a review costs. One model runs inside vexar — the reviewer, on the Claude Code backend — and every round of converge pays for it. The ledger prints the number.

Built as a daily driver first. It is used every day by the person who writes it. That is the standard it is held to, and the reason the rough edges are the ones nobody hits.