Native · Rust on GPUI · macOS / Windows / Linux
Every branch,
drawn before
you blink.
A very fast, native Git client. switchhead reads history in process with gitoxide, streams the commit graph while it is still being read, and runs every change through your own git, so hooks, credential helpers, SSH agents, signing and LFS behave exactly like the command line.
- 94ms
- first graph rows on git/git, 85,000+ commits
- 1.3s
- whole history laid out, about 2× faster than
git log --all --date-order - 0
- process spawns on hot paths: log, graph, refs and diffs read in process
- 1
- Rust binary, GPU-rendered. No Electron, no web view.
A replica built from the app's own palettes and lane colors. The rows stream in batches like the real log walk; use ↑ ↓ to move.
- Your git config
- Hooks
- Credential helpers
- SSH agents
- GPG & SSH signing
- Git LFS
- Submodules
- Worktrees
- Shallow clones
- fsmonitor
- commit.template
- merge.tool
A tour of the graph.
Twenty screens from the app as it is today, from the commit graph to the reflog. Click a shot to see it full size.
How it stays fast
Reads in process.
Writes through git.
The two halves of a Git client want opposite things. Reading history wants raw speed; changing a repository wants to behave exactly like your terminal. switchhead does both on purpose.
Read
- Log walk in date order with the commit-graph file, sent in batches with their graph rows
- Refs, commit diffs and blob diffs (histogram, word-level highlights)
- Columnar commit store: ids, times, interned authors, summaries in one arena
- Pure, incremental lane layout, unit-tested on synthetic histories
Write
- Commit, stage, checkout, merge, rebase, push, stash, tag: all through
git - Status with
--porcelain=v2: fsmonitor and the untracked cache - Progress streamed to the status bar; cancel kills git's whole process group
- Your hooks, signing, LFS and credential prompts behave like the command line
Performance budgets
Fast where it matters.
Every git operation logs its time, and the status bar shows how long the first rows took. These are the budgets the app is built against.
First rows appear in 94 ms; the list is usable long before the walk finishes. Without a commit-graph file gix needs 1.9 s before the first batch, so switchhead uses it whenever git wrote one.
Fork-class
Everything you reach for,
none of the waiting.
Built feature by feature against Fork's checklist. Everything below works today.
Local changes
Stage a line,
not a guess.
Stage, unstage or discard whole files, single hunks, or individual lines picked in the diff. The commit box counts your subject (amber past 50, red past 72), loads the last message on Amend and restores your draft when you turn it off. When a hook says no, its full output sits right under the box.
- Space or Enter stages, Tab switches lists, Ctrl/Cmd+Enter commits
- Ignore a file, its extension or a folder in one click
- Assume-unchanged and skip-worktree from the context menu
- Destructive actions always ask first



Coming next · AI assistant
Bring the coding CLI
you already use.
Claude Code, Codex CLI, Gemini CLI or your own. It writes commit messages from the staged diff, proposes conflict resolutions, explains git commands and reviews branches. You review and apply every proposal.
Safety lives in the server
- The CLI runs in a private, empty temp folder, never in your repository
- Its own shell and file-edit tools are turned off
- Its only tools are switchhead's read-only git MCP server, scoped to one repository
- It returns proposals; the app applies them only after you review them
- switchhead never reads, stores or proxies a CLI's credentials
Themes · Follow Omarchy
Ten themes.
Your desktop's, too.
The same design system as Switchyard. Pick one below and the whole page and the sample above follow it. On Linux, Follow Omarchy reads your active Omarchy theme and rebuilds the palette, every text color kept readable at 7:1.
You're looking at switchhead Dark. Zoom the whole UI with Ctrl + − 0.
Keyboard first.
Status
In active development.
Everything above the "coming next" line works today. The rest is tracked in PLAN.md.
- Assistant
- Commit messages, conflict resolutions, git command help and branch reviews through a read-only git MCP server.
- History
- File tree at any revision, open or save a file at a commit, and undo for hard resets, discards and cleans.
- Advanced
- Git LFS, submodule and worktree management, git-flow, custom commands, bisect, a diff minimap and identity profiles.
- Hosting
- GitHub, GitLab, Bitbucket and Azure DevOps accounts, clone from an account and pull requests.
- Release
- AppImage, macOS and Windows installers, and performance CI on git/git and linux.
Build from source.
Rust 1.97 or newer (pinned in rust-toolchain.toml) and git on your PATH.
$ sudo apt-get install -y libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev \
libxcb1-dev libvulkan-dev libfontconfig-dev libfreetype-dev libssl-dev pkg-config$ git clone https://github.com/jeremielumandong/switchhead $ cd switchhead $ cargo run --release -p switchhead-app -- ~/code
$ cargo fmt --all $ cargo clippy --workspace --all-targets -- -D warnings $ cargo test --workspace
Pass a repository to open it, or a plain folder to scan it for every repository inside.