Most coding agents hide the run behind a chat bubble: you can't see which files it touched, what command it's about to run, which model answered, or what it cost — so you can't trust it on a real repo.
PatchPilot
A coding agent that shows its work — every read, command, and token, in your terminal.
PatchPilot runs coding-agent tasks inside your repo and keeps the whole run in the open: the transcript, the diff it wants to write, the command it wants to run, the model it's routing to, and what the tokens cost. Risky actions wait behind an approval box. Local Ollama by default — Gemini, OpenRouter, NVIDIA, and Codex when you want them.
An Ink terminal UI with sticky approval prompts, a live transcript, per-tool permissions, a workspace boundary that blocks secret files, and one setup flow across local and cloud models.
Powerful actions stay boring and reviewable — you see every read, write, and command before it happens, and the diff before you commit.
For developers who don't trust a chat box that edits their code out of sight.
v1.2.2
- Default fullscreen shell with a real scrolling transcript, command palette, and pinned composer.
- Composable ultra modes — ultrafast, ultracheap, ultrafocus — tune effort, speed, and scope from the prompt.
- Hardened shell approvals, first-run risk acceptance, and Windows path fixes.
Developer setup
npm install -g @jx-grxf/patchpilot npm update -g @jx-grxf/patchpilot git clone https://github.com/jx-grxf/PatchPilot.git && cd PatchPilot gh repo clone jx-grxf/PatchPilot && cd PatchPilot open https://github.com/jx-grxf/PatchPilot/releases/tag/v1.2.2 gh release download v1.2.2 -R jx-grxf/PatchPilot -p 'jx-grxf-patchpilot-1.2.2.tgz' Highlights
- Local-first: runs on your own Ollama by default; Gemini, OpenRouter, NVIDIA, and Codex are one switch away.
- Every file read, proposed write, and shell command lands in the transcript before it runs.
- Risky actions sit behind a sticky approval box; secret files like .env are blocked outright.
- Live token, cache-hit, latency, and cost telemetry — including what a free route would have cost on the paid API.