A free, self-hosted Git GUI that runs in your browser.
Visual commit graph, inline diffs, hunk-level staging, and AI commit messages — served from Docker, on any OS including WSL. An open-source alternative to GitKraken, Sourcetree, and GitHub Desktop that lives on your own machine.
SikaGit is a self-hosted Git client with a full graphical interface that runs entirely in your browser and installs with a single docker compose up. It's for developers who want the clarity of a visual Git tool — commit graph, side-by-side diffs, partial staging — without a licensed desktop app, and who work across multiple repos, machines, or WSL. It exists because the polished Git GUIs are closed-source, paid, or OS-locked; SikaGit is open, free for personal use, and runs wherever Docker does.
| GitKraken | Sourcetree | GitHub Desktop | SikaGit | |
|---|---|---|---|---|
| Free & open-source | ❌ Paid / closed | ✅ Free & OSS | ||
| Self-hosted, runs in Docker | ❌ | ❌ | ❌ | ✅ |
| Runs in the browser (any OS incl. WSL) | ❌ | ❌ | ❌ | ✅ |
| Visual commit graph | ✅ | ✅ | ❌ | ✅ |
| Hunk-level staging | ✅ | ✅ | ✅ | |
| AI commit messages | 💲 Paid add-on | ❌ | ❌ | ✅ BYO key |
AI commit messages in SikaGit use your own Google Gemini API key. Competitor rows reflect their standard offerings at time of writing.
Commit & diff
- Visual commit graph — lane-based rendering with color-coded branches, merge curves, and uncommitted changes shown inline.
- Inline diff viewer — syntax-highlighted diffs with image preview and binary detection so the viewer never freezes on video, audio, or archives.
- Hunk-level staging — stage or discard individual hunks, not just whole files, straight from the diff.
- Full staging control — staged/unstaged panels with folder grouping, bulk stage/discard, and one-click stage-all.
AI assist (bring your own Google Gemini key)
- AI commit messages — generate a commit message from your staged diff.
- Smart commit grouping — let AI split a messy working tree into coherent, separately-committable groups.
- Save-for-later — AI-suggested branch name + message to park work-in-progress on a side branch.
Repos & branches
- Multi-repo projects — group repositories under projects with a collapsible tree in the sidebar.
- Branches, tags & merges — switch/checkout branches, inline branch/tag labels, merge with abort, delete branches.
- Remote operations — push, pull (merge or rebase), fetch, set/test remote URLs, with automatic default-branch detection.
- Author auto-detection — identity pulled from local, global, or host git config.
Runs anywhere
- One-command Docker setup —
docker compose upand open a browser tab. - WSL-friendly — handles Windows Subsystem for Linux paths transparently; host repos are mounted read-through.
- Uses your existing keys — SSH keys from
~/.sshand theghcredential helper are mounted for remote auth. - Live updates — status stays in sync over Socket.io.
Prerequisites: Docker with Docker Compose.
git clone https://github.com/AhmedSayedSk/Sikagit.git
cd Sikagit
docker compose up --buildThen open http://localhost:3200 in your browser.
Production build
docker compose -f docker-compose.prod.yml up --build -dRun without Docker (Node 22 + npm)
npm install
npm run devComing soon. To add them, drop the image files at the paths below and uncomment each line.
>| Layer | Tech |
|---|---|
| Frontend | React 19 · Vite 6 · TailwindCSS 4 · Zustand 5 · Radix UI · Lucide / react-icons |
| Backend | Node.js 22 · Express 4 · simple-git 3 · Socket.io 4 |
| Database | SQLite (better-sqlite3) |
| AI | Google Gemini (gemini-2.5-pro, bring your own API key) |
| Infra | Docker · Docker Compose · npm workspaces |
| Language | TypeScript 5.9 (types shared across client & server) |
Project structure
sikagit/
├── client/ React frontend (Vite)
│ └── src/
│ ├── components/ graph · diff · files · branches · log · operations · layout · ui
│ ├── lib/ API client, ANSI parser, file/repo icons
│ └── store/ Zustand state stores
├── server/ Express API server
│ └── src/
│ ├── routes/ git · repos · projects · browse · ai
│ └── services/ git, graph, db, path, ai services
├── shared/ Shared TypeScript types
├── data/ SQLite database (auto-created)
├── docker-compose.yml # development
└── docker-compose.prod.yml # production
PRs are welcome. Read the Contributing Guide to get a dev environment running and to learn the workflow, then look for issues labelled good first issue to get started.
If SikaGit saves you time, please star it — it genuinely helps others find it.
SikaGit is released under the Sikasio Source Available License. Free for personal use; commercial use requires a license from Sikasio.