Desktop Git client for Windows, macOS and Linux, inspired by SourceTree's UX: a readable graph, hunk staging and a sidebar with everything you touch daily.
Installers are published on Releases.
| OS | Download | Format |
|---|---|---|
| Windows | OpenGit_x64-setup.exe · OpenGit_x64.msi | Installer / MSI |
| macOS (Apple Silicon) | OpenGit_aarch64.dmg | DMG |
| Linux | OpenGit_amd64.deb · OpenGit_amd64.AppImage | Debian / AppImage |
The binaries are not signed or notarized (certificates cost money and this personal project does not pay for them), so the OS will warn you on first launch:
-
macOS: open the
.dmgand drag OpenGit to Applications. The app is ad-hoc signed (not notarized), so Gatekeeper blocks the first launch as coming from an unidentified developer; right-click the app → Open, or remove the quarantine attribute:xattr -dr com.apple.quarantine /Applications/OpenGit.app
You have to repeat it if you copy the app again, because macOS re-adds the attribute.
-
Windows: SmartScreen shows a warning. Click More info → Run anyway.
-
Linux: install the
.debwithsudo apt install ./OpenGit_*.debor make the.AppImageexecutable.
- Canvas commit graph with incremental loading: smooth in repositories with tens of thousands of commits.
- Diff with hunk, line and selection staging, plus discard without leaving the app.
- Image preview and comparison: before/after for image changes over a transparency checkerboard (PNG, JPEG, GIF, WebP and friends).
- SourceTree-style commit window: pending files with staged/unstaged sections, file preview,
Commit Options…(amend) and optional push immediately. - Complete sidebar: branches, remotes, tags, stashes, submodules and worktrees, with context menus.
- History operations: merge, cherry-pick, revert, reset and interactive rebase with plan preview.
- Block-based conflict editor and an in-progress operation banner (abort, skip, continue).
- Remotes with an options dialog, streaming progress and cancel; credentials are handled by the system credential helper.
- Navigable history: branch filter, column sorting, search and an "Uncommitted changes" row.
- Light/dark theme and keyboard shortcuts.
- In-app updates: checks for a new release on startup (or from the menu), downloads it in the background and offers to restart into it.
M7 completed on 2026-09-19 (SourceTree parity: commit window, stashes, remote dialogs, sortable columns and merge). M8 in progress (commit search done): file history, comparing refs, blame and management of remotes, submodules and worktrees. Details in ROADMAP.md.
| Area | Decision | ADR |
|---|---|---|
| Desktop shell | Tauri 2 (Rust) | ADR-0001 |
| UI | React + TypeScript | ADR-0002 |
| Git engine | system git binary |
ADR-0003 |
| Commit graph | canvas + incremental loading | ADR-0004 |
| Global state | Zustand | ADR-0005 |
| Updates | tauri-plugin-updater + minisign |
ADR-0007 |
- Git is the source of truth. Git is never reimplemented: the system binary is orchestrated and its output parsed robustly (
-z,--porcelain=v2). - The UI never blocks. Git operations run in separate processes with streamed output; the repository state is refreshed by watching
.gitwith debounce. - One codebase for the three OSes. No parallel per-platform codebases.
- When in doubt, terminal. Interactive rebase and destructive operations come late, with a safety net and never as the only path.
OpenGit/
├── src/ # React + TypeScript (UI)
├── src-tauri/ # Rust (Tauri core)
├── assets/ # Logo and screenshots
├── AGENTS.md # Instructions for agents (opencode, Claude, etc.)
├── README.md
├── ROADMAP.md
├── .github/workflows/ # CI: frontend, Rust and builds on the three OSes
├── .ai/ # Agents, skills, workflows and memory
├── docs/
│ ├── architecture/ # Components and data flow
│ ├── decisions/ # ADRs
│ ├── guides/ # Development guides
│ └── tickets/ # Backlog, one file per ticket
└── LICENSE
- ROADMAP.md — milestones and exit criteria.
- docs/tickets/ — backlog, one file per ticket.
- docs/architecture/overview.md — components, data flow and performance budget.
- docs/decisions/ — ADRs.
- docs/guides/development.md — environment, commands and conventions.
- AGENTS.md — rules for agents working on the repo.
Requirements: Node.js 22+ and a stable Rust toolchain (see docs/guides/development.md).
npm install
npm run tauri devMIT — see LICENSE.

