An offline-only desktop diff viewer / sharing app for Windows and macOS — GitHub-style rendering, serious about privacy. Electron + Vue 3 + Pinia + Monaco.
It never makes a network request: files stay on your machine, enforced by a session-level kill-switch, a strict CSP, and a sandboxed renderer. See docs/security.md.
Grab the latest installer for your OS — no account, no telemetry, no auto-update:
| OS | Download |
|---|---|
| Windows (10/11) | Diff-Bro-Setup-Windows.exe |
| macOS | Diff-Bro-macOS.dmg |
Or browse all releases.
macOS via Homebrew (updates with brew upgrade):
brew tap mindaugaskasp/tap
brew install --cask --no-quarantine diff-bro--no-quarantine skips the Gatekeeper prompt described below (the build isn't
notarized yet). The cask is refreshed automatically on every release.
Builds are unsigned for now (no Apple/Microsoft cert yet):
-
Windows — SmartScreen warns; click More info → Run anyway.
-
macOS — Gatekeeper says "Diff Bro is damaged and can't be opened." It isn't damaged — that's just how recent macOS reports an unsigned, un-notarized app that was quarantined on download. Drag it to Applications, then run once in Terminal:
xattr -dr com.apple.quarantine "/Applications/Diff Bro.app"and open it normally. More detail in docs/packaging.md.
- Diff two files or pasted text — split/inline, word-level highlights, syntax highlighting, live re-diff when a file changes on disk, and an in-view search (plain / regex, match count, jump-to-match).
- Drag & drop files onto the window (two at once builds the diff; a third starts over). Fixed, single window; light/dark themes; clamped zoom.
- Saved diffs — AES-256-GCM encrypted at rest, auto-expiring (≤ 24 h), organized into categories, favoritable.
- Share a saved diff as a sealed, signed
.diffbrofile for one recipient; manage named trusted keys under the Security menu. - Snippets — an encrypted, categorized, non-expiring text library with per-snippet syntax (JSON / SQL / Markdown / YAML / Python / Bash / PHP / …), filter + copy, and passphrase-protected export/import.
- Tools — Base64, and JSON / XML / SQL format+validate (Monaco-highlighted, with "Add to Snippets"), plus a passphrase text Encrypt/Decrypt.
- Config backup/restore — one passphrase-encrypted file for your keys, trusted hosts, snippets and settings (not diffs).
JSON/XML content shows an inline "pretty-print it?" banner before you diff.
Light and dark themes, GitHub-style rendering. |
Saved diffs are encrypted on-device and auto-expire. |
npm install
npm run dev
npm run check # ESLint + Vitest — run before every change landsNo local Node? The same flow runs in Docker: make dev (app via noVNC at
http://localhost:6080/vnc.html) and make check. See
docker/README.md and make help.
- Architecture — processes, trust boundary, directory map.
- Security model — offline guarantee, sharing, keys, backup.
- Packaging & releasing — installers, signing notes, CI.
- Coding standards and hard rules live in CLAUDE.md; roadmap in DEVELOPMENT_PLAN.md.


