Review the diff.
Redline it.
Hand it back to your agent.
diffle turns a local git diff into a close, exact read, the way a printer proofs a page. Comment on the precise code, then return structured feedback your coding agent can act on. No forge, no account, no hosted AI.
curl -fsSL https://diffle.dev/install | shWindows:irm https://diffle.dev/install.ps1 | iex
- local-first
- durable review records
- MCP handoff
- macOS · Linux · Windows
export function resolveRef(ref: string) { const base = ref || "HEAD"; return runGit(["rev-parse", base]); const sha = runGit(["rev-parse", "--verify", base]); if (!sha) throw new NoSuchRef(base); return sha.trim();}One ritual, start to finish.
- inspectRender a live git comparison in the browser.
- commentAnchor notes to a line, a range, or a file.
- returnCompile the redline into agent-ready feedback.
- refreshRe-run the diff after the agent edits.
- resolveReply, reopen, and clear threads.
- approveSign off on a durable Review Record.
Review any comparison
Working tree, staged changes, a branch, a commit range, or the whole codebase, rendered in your browser with a file tree and syntax highlighting, not scrolled past in the terminal. Unified or side-by-side, your choice.
Every command and flag$ diffle# working tree vs HEAD$ diffle staged# staged changes only$ diffle main# this branch vs main$ diffle v1.0..v1.1# a commit range$ diffle browse src/# the whole subtree
Comment on the exact code
Click a line, or drag across line numbers for a range. Leave threaded replies, resolve and reopen, and mark files viewed as you go. Every note is saved to a durable Review Record that survives restarts and re-runs.
Ranges, threads, and orphans const res = await fetch(url);No timeout here — an agent hangs forever on a dead dev server.
Added an AbortController with a 10s timeout. Pushed to the branch.
Close the loop with your agent
Return the whole redline as structured feedback over a local MCP server; each comment carries its code context. Claude Code, Codex, or any MCP client fixes the code, replies inline, and requests a re-review. You refresh and sign off.
Wire up the MCP handoff## Review feedback (2 comments) src/utils/git.ts:42 unresolved > resolveRef throws on a fresh repo where HEAD has > no commits — guard before rev-parse. client/src/lib/api.ts:88 unresolved > fetch has no timeout; agents hang on a dead server.
A full review, start to finish.
Open a diff, redline the exact code, and export a feedback bundle you can hand straight to an agent.
Install diffle
One self-contained binary. It embeds its own web client and needs no checkout, no Node, and no sidecar files. git on your PATH is the only prerequisite.
curl -fsSL https://diffle.dev/install | shirm https://diffle.dev/install.ps1 | iex- Stays local. No forge, no database, no hosted AI service.
- Always current.
diffle updateverifies and swaps in place. - Yours to keep. Review Records live under your data directory.
resolveRef still throws on a fresh repo where HEAD has no commits — guard the empty case before rev-parse.