
Your machines. Your agents.
An agent finishes a task and leaves you a worktree full of changes that aren't committed yet. Every other review tool waits for a pull request. GitWarren reads that worktree directly — staged, unstaged and untracked — on whichever of your machines it is on. Your laptop, a VPS, a WSL distro, a box with no screen at all.
v0.1.17 · Apple silicon and Intel · Windows and Linux too
or brew install --cask klarluft/tap/gitwarren
no Electron? npx gitwarren serve serves the same UI to a browser
Before the commit
An agent's output isn't a commit. It's a dirty worktree.
That is the gap. By the time work has been committed, pushed and opened as a pull request, you have already accepted its shape — and the moment when a correction was cheap has passed. GitWarren finds the worktree where the branch is checked out, wherever it happens to live on disk, and folds its staged, unstaged and untracked files into one diff you can read and comment on.
Agents in the loop
Your agents take part in the review — they aren't just the subject of it.
GitWarren ships an MCP server over stdio. Point Claude Code, Codex or any MCP client at it and it gets the same seventeen tools the app itself uses: open a review, read the whole discussion, reply in a thread, leave a comment on a line, resolve one. Ask an agent to explain its own diff, or to answer the question you left on line 40 — in the review, where the answer stays. Every machine you add runs its own, set up by one sentence you paste into whatever agent is running there.
Install it as a plugin and the agent also gets a note that teaches it when to open a review and how to answer your comments. Cursor, Codex, VS Code and Kiro read the same repository from their plugin screens.
/plugin marketplace add klarluft/gitwarren-appClaude Code, then/plugin install gitwarren@gitwarrengemini extensions install https://github.com/klarluft/gitwarren-appGemini CLInpx skills add klarluft/gitwarren-appthe note alone, into any agent
Always attributed
A machine-written comment is always marked as one, and the tool's name comes from the MCP handshake rather than from whatever the model decides to call itself that day.
Two agents stay two
Each MCP session is given its own id, so two agents working at the same time are told apart in the thread without either having to cooperate.
Yours to edit
You can edit or delete anything in a review. An agent is held to its own messages — it can fix its own typo, not quietly rewrite yours.
Never over the network
An agent talks to the GitWarren on its own machine, over stdio, reading real paths on a real disk. The part that crosses a network is the window you are looking at — never the agent.
Across your machines
The review happens where the code is.
A repository lives on one machine, and so does its review. GitWarren does not copy either one. It reaches the machine the code is already on, runs the review there, and renders it in the window in front of you — so the diff is read from the real git, and the agent that wrote it is sitting next to the files rather than across a network.
Nothing is replicated, relayed or stored anywhere but the computers you already own. There is no pairing token and nothing is exposed to the internet.
Over SSH
Add a machine you can already reach — a VPS, a build box, a PC — and GitWarren installs itself there over the same connection. The host needs nothing but git: the daemon brings its own Node. How that works.
WSL, from Windows
A WSL distro is a host like any other, reached over wsl.exe instead of ssh. Windows-native repositories stay first class — most Windows developers never open a distro. The WSL guide.
On your tailnet
Your machines find each other by themselves, comments arrive the moment they are written, and a review opens on your phone with no token to copy. Identity is your own Tailscale login. Set it up.
A machine that goes away is shown as offline rather than as its last known state. Nothing is cached across a disconnect, so what is on screen is either true now or visibly not there.
Two shells, one review
A desktop app, or just a browser tab.
GitWarren is not an Electron app you have to want. It is a review UI with two shells around it, and every line of the UI is the same in both. Install the app if you want a tray icon and links that open from your terminal. Run the command instead and the identical review UI is served on loopback, for a browser tab to open.
brew install --cask klarluft/tap/gitwarrenthe desktop app, macOSnpx gitwarren serveanywhere Node already isbrew install klarluft/tap/gitwarren-clibrings its own Nodecurl -fsSL https://gitwarren.com/install.sh | shno Homebrew, no Node
Nothing is built twice
The app and the browser get the same renderer from the same build. A shell supplies a tray, a protocol handler and a window, or it supplies a tab — and nothing above that layer knows which one it got.
No token to copy
gitwarren serve binds loopback only and mints a token for that launch, printed in the URL it hands you. Nothing is typed by a person, and quitting the process revokes it.
Headless is the point
A VPS or a WSL distro runs the same daemon with no screen attached, and is reviewed from the machine you are actually sitting at. Installing GitWarren.
Local by construction
None of it leaves machines you own.
No account
Nothing to sign up for and nothing to sign in to. When machines do need to know who is asking, the answer is your own Tailscale login — not a credential GitWarren issued and not one it stores.
Nothing cached
Every branch name, commit and diff on screen is read from git at the moment it is shown — so nothing can quietly go stale behind your back.
One SQLite file per machine
A machine's reviews and comments live in a single file in its application-data directory, beside the code they are about. Delete it and GitWarren is gone from that machine. Your repositories are untouched.

Read the diff before you push it.
or brew install --cask klarluft/tap/gitwarren
Or install nothing: npx gitwarren serve runs the same review UI in a browser tab, on any machine with Node — including one with no screen. All the ways in.
Free and open source under GPL-3.0