Every repository.
Every agent. One window.
l8git is a native desktop Git client for developers who juggle a dozen repositories. Interactive rebase, stacked pull requests, CI, conflict resolution and four coding agents in isolated worktrees — without opening a browser, and without an Electron runtime.
macOS · Windows · Linux — free and open source under the MIT license. No account, no telemetry by default.
Changes
5 filesfeat(auth): add OAuth2 flow with PKCE
Implement authorization code flow with PKCE for secure token exchange and add refresh token rotation on expiry.
Pull requests, reviews and CI on
Cloud, Enterprise and self-hosted. Capabilities are detected per host.
AI, on your terms
Or none at all — every AI feature is opt-in, and Ollama keeps it on your machine.
A Git client, not a subscription
Everything is in the box on day one. The roadmap commits to it staying that way — no paywall, no fair-source clause, no proprietary components.
Open source
MIT, no paywall, no fair-source clause
Git forges
GitHub, GitLab, Bitbucket, Gitea/Forgejo
AI providers
including Ollama, fully local
Agent CLIs
each in its own git worktree
Languages
EN, DE, ES, FR, PT, ZH, JA
Platforms
macOS, Windows, Linux
Why l8git
Six reasons it replaces the terminal, not the other way round
Multi-repo workspace
You do not work on one repository
Most Git clients are built as if you did. l8git assumes a service, its client, a design system and three side projects — all open, all watched, all one keystroke away.
Tabs, not windows
Add as many local repositories as you like. Switching costs nothing and nothing loses its state.
One action, every repo
Fetch, pull or push across the whole workspace at once, with progress and a cancel button.
Watched on disk
The UI refreshes itself when files change — and skips node_modules, target and build output.
Nothing gets lost
A cross-repo inbox plus native notifications for red CI, review requests and finished agents.
CI failed on main
api-server
Review requested · #204
design-system
Codex finished · awaiting review
my-app
#88 merged by teammate
mobile-app
Twenty-two panels, one sidebar — reorderable, hideable, all reachable from ⌘1…⌘8
Everything in the box
Ten areas, no upsell between them
Pick a corner of the app. Every item below ships today, in the free and open-source build.
Every repository in one window
Add as many local repositories as you want. l8git keeps them all in a tabbed workspace, watches them on disk, and reopens the exact layout you left behind.
Tabbed multi-repo interface
Add any number of local repositories and switch between them without losing state.
Parallel operations
Fetch, pull or push across every repository at once instead of one by one.
File system watcher
The UI refreshes itself the moment files change on disk — no manual reload, and build directories are ignored.
Persistent state
Your workspace layout, open tabs and active panel come back exactly as you left them.
Command palette
Every action in the app is reachable from Mod+K without ever touching the mouse.
Rebindable hotkeys
Remap every shortcut, with conflict detection and panel-scoped bindings that may safely overlap.
Agents
Four agents working at once, and none of them can touch your checkout
Codex, Claude Code, OpenCode and Cursor run as chats inside l8git. Every session opens its own git worktree, so sessions run in parallel, your working copy stays untouched, and nothing lands until you have read it hunk by hunk.
Codex
OpenAIEmbedded as a chat, running in its own worktree.
Claude Code
AnthropicFull session review before a single line lands.
OpenCode
Open sourceSame review and finish flow as every other provider.
Cursor
CursorParallel sessions across every repository you have open.
Prompt
Talk to the CLI inside the repo tab.
Worktree
The session gets its own worktree and branch.
Review
Keep or discard every hunk it produced.
Finish
Commit, merge back, clean up — one click.
Extract the token refresh into its own module and cover it with tests.
Created src/auth/refresh.ts, moved rotation logic, added 6 tests. All green.
AI suite
AI that suggests. You decide.
Six providers, every feature opt-in, every output a draft. l8git never applies an AI change on its own — not to a conflict, not to a commit, not to a branch.
Commit messages
Read from the staged diff, written in the language you configure per repository.
Commit splitting
A pile of changes grouped into logical commits — every group editable first.
PR descriptions
Drafted from the diff between the base and the compare branch.
Conflict suggestions
Proposed resolutions inside the three-way editor. Proposed — never applied.
Editable prompts
Every feature's system prompt is yours to change, with reroll and hints on any output.
Local models
Ollama is a first-class provider. No key, no network, nothing leaves the machine.
feat(auth): add OAuth2 flow with PKCE
Implement the authorization code flow with PKCE for secure token exchange, and rotate refresh tokens on expiry.
ours
const token = await rotate(refresh)
theirs
const token = await refreshToken(session)
merged
const token = await rotate(session.refresh)
Rebase completed
6 commits replayed onto main
Safety net
A Git client you can be careless in
The reason people drop back to the terminal is that a GUI did something they could not see and could not take back. l8git makes both impossible.
Universal undo
Merge, rebase, reset, cherry-pick, revert, commit, amend — all reversible, and never with --hard.
Reflog you can click
See where HEAD has been and go back, keeping or discarding your local changes on the way.
Every command, written down
The transparency log records each git invocation with its arguments, duration and exit status.
Credentials in the keychain
HTTPS tokens live in the OS keychain, never in a plaintext config. A full security review has been completed.
Flow
Reachable without the mouse, rebindable without a config file
Every action in l8git sits behind the command palette, and every shortcut can be remapped in Settings with conflict detection built in.
❯cargo test --package l8git
running 214 tests
test result: ok. 214 passed; 0 failed
❯
Panel-scoped bindings may reuse the same key as long as they belong to different panels — a clash with a global shortcut is always flagged.
Comparison
What you usually pay for, or drop to the terminal for
Feature availability as of l8git 0.5.0 and the current stable release of each client. Corrections are welcome as a pull request.
| GitHub Desktop | Sourcetree | GitKraken | ||
|---|---|---|---|---|
| Multi-repository workspace | Tabs, parallel ops | Tabs | Tabs | |
| Visual interactive rebase | ||||
| Stacked branches & PR chains | ||||
| Universal undo + git command log | Undo only | |||
| Embedded coding agents in worktrees | ||||
| Local AI models (Ollama) | ||||
| Self-hosted forges | GitLab, Gitea, GHE | Partial | Paid tier | |
| Embedded terminal per repo | ||||
| Native runtime, no Electron | Tauri + Rust | |||
| Open source | MIT | MIT | ||
| Price | Free | Free | Free | Paid |
Architecture
Native, because a Git client is a tool, not a tab
l8git is a Rust binary with a React interface on top — not a browser wearing a window frame.
Rust does the work
Git runs as a real subprocess from Rust on a blocking thread pool, so a slow fetch on a monorepo never freezes the interface.
No bundled browser
Tauri uses the webview your OS already ships. The download is a fraction of an Electron client and memory stays where it belongs.
Virtualised where it counts
History and diffs render only what you can see. Commit search is debounced in the UI and paginated in the backend.
Two processes, one contract
Every backend operation is exposed through a typed IPC bridge — and logged, so you can read exactly what ran.
Desktop runtime
Tauri 2 — Rust backend, system webview
Interface
React 19 + TypeScript, Vite 7, Tailwind CSS 4
Git integration
Shell-based git execution from Rust
Routing & state
TanStack Router v1, Zustand v5
Editors
Monaco for diffs, merges and workflow YAML
Terminal
xterm.js over portable-pty
File watching
notify + notify-debouncer-full
HTTP
reqwest — GitHub, GitLab, Bitbucket, Gitea APIs
AI
Vercel AI SDK across six providers
i18n
i18next with lazily loaded locales
Performance is a CI gate, not a claim: start-up time, status refresh and graph rendering on monorepos are benchmarked every quarter.
Open source
It is open source, and that is not a footnote
Every line of the Rust backend and the React interface is readable, forkable and auditable. The transparency log inside the app is the same promise, one level down.
MIT, all of it
No paywall, no fair-source clause, no proprietary modules held back for a pro tier.
Public roadmap
Twelve months of planned work, checked off in the open — including what is still missing.
Docs in the repo
Plain Markdown next to the code: getting started, commits, stacks, PRs, agents, safety, shortcuts.
Contributor onboarding
CONTRIBUTING.md covers setup, architecture and i18n rules, with a list of good first tasks.
Seven languages
English, German, Spanish, French, Portuguese, Chinese and Japanese, switchable at runtime.
Funded by sponsors
Sustainability runs through GitHub Sponsors and Open Collective, not through locked features.
Leon-Achteresch/l8git
FAQs
The questions people actually ask before switching Git clients.
Something missing? Open a discussion on GitHub.
Download
Free, open source, and roughly two minutes away
Grab the installer for your platform, point it at a repository, and you have a commit graph and an AI-drafted message before you have configured anything.
Requires git on your PATH. Package manifests live under packaging/ — publication to each channel is rolling out.
