Git, but better — a modern version control client with stacked branches, parallel workflows, unlimited undo, and first-class support for AI-powered development.
GitButler is a ground-up reimagining of how developers interact with Git. Rather than wrapping the git CLI in a thin UI layer, it builds its own Rust engine on top of libgit2 and the gitoxide library, giving it the freedom to implement concepts that vanilla Git can’t: stacked branches, true parallel branch workflows, first-class conflict handling that doesn’t interrupt your flow, and an unlimited undo timeline for every repository operation.
The application ships in two forms: a polished Tauri desktop GUI written in Svelte and a companion but CLI that exposes the same Rust backend. Both share a single unified API layer (but-api), so anything you can do in the GUI you can script from the terminal. The project targets developers who find vanilla git rebase -i workflows clunky and IDE-integrated Git panels too limiting.
GitButler has native forge integration — authenticate once with GitHub or GitLab and you can open, update, and track pull requests, watch CI statuses, and push directly to forges without switching tools. A built-in AI layer can draft commit messages, branch names, and PR descriptions using pluggable LLM backends (OpenAI, Anthropic, local Ollama), and the repository includes skills and hooks for connecting modern coding agents directly into its Git management capabilities.
With 21,000+ GitHub stars and a release cadence of multiple versions per week, GitButler is among the most actively developed Git clients in the open source ecosystem. It works as a drop-in companion to any existing Git repository on macOS, Windows, and Linux with no migration required.
but CLI that exposes the same engine for scripting and terminal workflowsArchitecture
GitButler is organized as a Rust workspace with over 50 crates, cleanly stratified from foundational leaf crates (error types, serialization utilities, database abstractions) through domain crates (commit-graph engine, workspace model, hunk dependency tracking) up to client-facing binaries (the Tauri desktop app and the but CLI). The centerpiece architectural innovation is the commit-graph abstraction in but-graph, which replaces the first-parent-only traversal used by all prior versions with a full DAG representation — segments of commits grouped by ancestry — allowing rebases and mutations to work correctly on histories that include merge commits. A unified API layer (but-api, annotated with a custom proc-macro) means both the GUI and the CLI call identical functions; there is no separate web API with different semantics. Dependency direction is explicitly enforced: legacy crates (prefixed gitbutler-) are marked for removal, and new crates must not depend on them, establishing a clear migration boundary rather than an ever-growing monolith.
Tech Stack
The backend engine is pure Rust using libgit2 (via the git2 crate) and gitoxide (gix) as complementary Git library layers; gitoxide handles hot paths like diff computation and index traversal where performance matters, while git2 covers operations not yet available in gitoxide. Persistence is SQLite through rusqlite with bundled mode to guarantee a consistent version across platforms. The desktop GUI is built on Tauri 2 with a SvelteKit frontend written in TypeScript, communicating with the Rust layer via Tauri’s IPC bridge. The but-server crate exposes the same engine as an HTTP/WebSocket server for programmatic access, and but-napi provides a Node.js binding via napi-rs for JavaScript consumers. AI integrations use async-openai for OpenAI-compatible APIs and an ollama client for local models. The build system is a pnpm + Turborepo monorepo for the frontend packages alongside the Cargo workspace for Rust.
Code Quality
The codebase applies a two-tier quality classification documented in Cargo.toml itself: exemplary crates enforce #![deny(missing_docs)], exhaustive tests, and no legacy dependencies; lower-tier crates are explicitly called out as needing work. The exemplary crates (including but-core, but-graph, but-db, but-error) demonstrate comprehensive inline documentation, typed error hierarchies via thiserror, and test coverage using dedicated test-support crates rather than integration against the real filesystem. Clippy is configured with all = deny at the workspace level with only narrowly-scoped exceptions. The frontend has Vitest unit tests for component logic and WebDriverIO end-to-end tests. CI runs on GitHub Actions with distinct lint, test, and build stages. The legacy crate layer is the main quality debt: some gitbutler-* crates have limited documentation and tests, though they are explicitly quarantined and being actively replaced.
What Makes It Unique GitButler’s core innovation is treating the Git commit graph as a first-class data structure rather than an implementation detail hidden behind branch names. Most Git UIs model the world as “current branch = current checkout” and break down on anything involving merge commits or concurrent branch work. GitButler inverts this: its workspace is a projection of the graph, not the other way around. The parallel-branches-in-one-worktree concept — where changes in the working tree are automatically attributed to a branch based on hunk dependency analysis — is genuinely novel and has no equivalent in competing open source tools. Combined with an oplog that captures every operation (not just commits) and conflict handling that defers rather than aborts, it represents a coherent philosophical rethink of Git interaction rather than incremental UI polish on top of existing semantics.
GitButler is distributed under the Functional Source License 1.1 (FSL-1.1-MIT). In plain terms this is a source-available license, not a traditional open source license: you can read the code, modify it, contribute to it, use it internally, and build non-competing products with it. The restriction is that you cannot ship a product that competes directly with GitButler during the first two years of each release. Two years after any given version is published, that version automatically converts to the MIT license with no restrictions whatsoever. This is important context for teams evaluating long-term dependency risk — the licensing model is designed to eventually produce fully permissive releases while protecting commercial sustainability in the short term.
GitButler is a desktop application, not a server, so ‘self-hosting’ means distributing and running the binary on developer workstations rather than operating a service. Installation is straightforward via downloadable installers for macOS, Windows, and Linux, or by building from source using the documented Rust and Node.js toolchain. There is no backend server to maintain, no database to provision, and no uptime SLA to worry about. Teams in air-gapped environments can build from source and distribute internally. The only external dependencies at runtime are the forge APIs (GitHub, GitLab) for PR integration, and optionally an LLM provider for AI features — both of which can be configured to point at on-premises or self-hosted alternatives.
GitButler does not have a paid cloud tier in the traditional sense: the core product is the same for everyone. What you give up compared to commercial Git clients like Tower or Git Kraken is primarily polish in edge cases, enterprise SSO integration, and commercially-backed support contracts with SLAs. The project is actively funded by a venture-backed company (GitButler Inc.) and has a professional support channel through GitHub Issues and Discord, but there is no paid support tier with guaranteed response times. Teams that require enterprise support agreements would need to negotiate directly with the GitButler team or budget for internal expertise.
No Code Platforms · AI Development · Developer Tools
Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.
Developer Tools · Game Development · Design Tools
Free, MIT-licensed 2D and 3D game engine with one-click multi-platform export and no royalties.
Developer Tools · Databases · Search
The open-source Postgres development platform that replaces Firebase with authentication, real-time APIs, edge functions, storage, and vector embeddings — all built on PostgreSQL.