English · Español
Your whole repo, in one window.
Stop juggling six tabs to ship a commit. Graph, PRs and MRs, issues, CI/CD pipelines, releases, terminals, AI agents, an in-repo .http workspace, and an in-app code editor — in a single native desktop app.
No Electron. No telemetry. macOS · Linux · Windows.
Download for macOS, Linux, or Windows ↓ · Visit the website · Is it for me?
If BeardGit saves you a tab, drop a ⭐ — it’s how the project gets seen.
You ship code from one keyboard, not seventeen tabs. BeardGit is built on a simple premise: everything you touch to release a change should live in one app. Your commit graph. Your branches. Your staging. Your pull requests and merge requests on GitHub and GitLab. Your CI pipelines and deploy jobs. Your issues, labels, and releases. Your terminals. Your AI agents. Your API requests, committed alongside the code that calls them. Your repo files, edited in place. Close the browser tabs. Close the other clients. BeardGit is the one window you keep open.
100K+ commits render smoothly via a viewport-sliced renderer. Branch lanes, merge curves, sync-state lines, author highlighting — all on HTML canvas, not DOM. ⌘F filters by author, message, or ref; the graph re-lays out only for the matches. Three-way merge editor, interactive rebase, revert, amend, reset, cherry-pick, blame, reflog with recovery actions, and a visual git bisect with auto-mode that runs your test command at every step.
Pick a folder that isn't a repo yet and BeardGit offers to set it up in one shot: git init, drop a .gitignore, commit as Initial commit, create a matching repo on GitHub or GitLab, wire the remote, and push — every step independently optional, partial progress preserved on failure.
Create, edit, merge, approve, and comment on PRs and MRs with per-file diff and inline review threads. Manage issues, labels, milestones, assignees. Trigger, retry, retry-failed-only, cancel pipelines. Publish releases and stream asset uploads. Edit repo settings — description, homepage, topics, visibility, default branch, branch protection, labels — without leaving the app.
A clean ForgeProvider abstraction wraps gh and glab. Self-hosted GitHub Enterprise and on-prem GitLab work out of the box; auth is checked per-host so a VPN-only forge doesn't shadow a working one. Multi-instance friendly: a personal gitlab.com and a corporate self-hosted GitLab can coexist.
Both CLIs ship bundled in every installer. No PATH dance, no setup.
Claude Code, Codex, OpenCode — your local install, driven by BeardGit. Each background run lands on its own ai/<provider>/<slug> branch in an isolated worktree under .beardgit/ai-worktrees/, queued at a concurrency cap you set. Review, merge, or discard. The transcript stays in-app and survives tab switches; your main checkout stays untouched.
From any tab the active provider can also draft a commit message, review your staged changes, or review a PR — gated on "there's actually something to talk about" so you never get an empty reply.
.http workspace, in your repo
Your API requests live next to the code that calls them. Plain .http files under .beardgit/requests/, committed with the rest of the project, so git pull shares them with the team. Environments split into commit-safe _env/<name>.json; secrets stay encrypted in BeardGit's local credential store, never in git.
When a forge provider is active, seven forge_* auto-variables (forge_token, forge_host, forge_api_base, forge_owner, forge_repo, forge_branch, forge_commit_sha) are available with zero setup, so hitting the API of the repo you're staring at is one click. JSON syntax highlighting, {{var}} autocomplete, diff between any two responses from history, and Copy-as cURL / fetch / HTTPie / wget. Cancel actually cancels the in-flight request.
Edit repo files without leaving BeardGit. CodeMirror 6 with per-language snippets (Rust, TS / JS, Python, Go), keyword completion, JSON lint with rules for package.json and tsconfig.json, inline color pickers in CSS, indent guides, and a gitignore-aware file tree. Save writes to disk; ⇧ Save also stages it for the next commit. Right-click any file row in Changes, Branches, or Reflog and pick Open in editor to jump straight in.
⌘1…⌘9 jumps between them.claude / codex / opencode start and updates the tab on the fly.tracing with daily rotation and 7-day auto-purge to a per-platform path. The log path is included in the in-app error dialog; sharing a file is your call, never the app's.Five minutes from download to first commit. No accounts, no logins, no "BeardGit Cloud."
You'll like it if you:
You probably won't if you:
git CLI and lazygit — BeardGit is GUI-first.BeardGit is free and source-available. The CC BY-NC-SA license blocks reselling BeardGit itself — using it commercially in your team is fine.
Pre-built installers are published on every tagged release:
| Platform | Architecture | Format |
|---|---|---|
| macOS | Apple Silicon | .dmg |
| Linux | x64 | .AppImage |
| Windows | x64 | .exe |
→ Download the latest release, pick your installer, and run it.
ghandglabare bundled — no extra setup needed.
BeardGit is currently distributed without Apple or Microsoft code-signing certificates, so both operating systems will flag the app the first time you open it. The app is safe; the warnings exist because the binaries are not notarized/signed. You only need to do this once per install.
macOS — "BeardGit is damaged" / "developer cannot be verified"
xattr -dr com.apple.quarantine /Applications/BeardGit.app
Or right-click BeardGit.app → Open → click Open in the confirmation, or use System Settings → Privacy & Security → Open Anyway.
Windows — "Windows protected your PC" (SmartScreen)
Click More info → Run anyway. The warning won't reappear on the same machine.
macOS
xcode-select --install
Linux (Debian / Ubuntu)
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
Linux (Arch)
sudo pacman -S --needed webkit2gtk-4.1 base-devel curl wget file \
openssl appmenu-gtk-module libappindicator-gtk3 librsvg xdotool
Linux (Fedora)
sudo dnf install webkit2gtk4.1-devel openssl-devel curl wget file \
libappindicator-gtk3-devel librsvg2-devel libxdo-devel
sudo dnf group install "c-development"
Windows
git clone [email protected]:The3eard/BeardGit.git
cd BeardGit
npm install
npm run tauri dev
First build compiles every Rust crate and takes roughly 3–5 minutes. Subsequent runs are fast. Release bundle:
npm run tauri build
| Layer | Stack |
|---|---|
| Shell | Tauri 2 with the auto-updater plugin |
| Core | Rust — 18 crates, libgit2, SQLite, tracing, tokio, reqwest, portable-pty |
| Frontend | Svelte 5, TypeScript, Canvas 2D, CodeMirror 6, xterm.js + WebGL, Vite, Paraglide 2 |
| Integrations | gh and glab (bundled), Claude Code, Codex, OpenCode |
| CI | GitHub Actions — cargo fmt, cargo clippy --workspace -D warnings, cargo test --workspace, svelte-check, vitest, stylelint, eslint |
Three layers with strict boundaries. Only app-core depends on Tauri — every other crate is a reusable library.
| Crate | Role |
|---|---|
git-engine |
Hybrid git — git2 for reads, system git for writes |
graph-builder |
Pure DAG construction and lane assignment |
forge-provider |
ForgeProvider trait + shared forge types (contract-only) |
cli-provider |
GitHubCli / GitLabCli impls of ForgeProvider via gh / glab |
provider |
CiProvider trait + CI types + shared HTTP helpers |
gitlab-api / github-api |
REST implementations of CiProvider |
ai-provider |
AiProvider trait + shared AI types |
claude-code / codex / opencode |
AiProvider implementations |
auth |
AES-256-GCM encrypted credential store with machine-bound key |
storage |
SQLite via rusqlite, JSON config, TOML theme loader, logging |
task-runner |
Async task manager with streaming output and cancellation |
terminal |
PTY session manager via portable-pty with OSC 7 integration |
watcher |
Debounced filesystem + AI config + sessions watchers |
mutation-events |
Lightweight event bus for cross-feature notifications |
requests-runner / requests-store |
.http parser, executor, and SQLite-backed history |
app-core |
200+ Tauri command handlers, AppState, event bridge |
| Branch | Purpose |
|---|---|
main |
Mirrors the latest stable release. Auto-update endpoint points here. |
beta |
Integration branch. Feature/fix branches merge here with --no-ff, then main is fast-forwarded on release. |
Day-to-day work happens on short-lived branches off beta (feat/<thing>, fix/<thing>, …). Don't batch features on a long-lived branch.
Pull requests welcome. See CONTRIBUTING.md. All contributors must sign a short CLA before their changes can be merged.
If you find a bug, open an issue. If you're unsure whether something's a bug, a limitation, or an opportunity for a plugin, open it anyway — over-triage beats under-triage.
See SECURITY.md for our disclosure policy.
CC BY-NC-SA 4.0. Free for non-commercial use with attribution and share-alike. Commercial use of the app by individuals or teams is fine — the NC clause is defensive (it blocks reselling BeardGit itself).
Made with cargo, coffee, and stubbornness by Adolfo Fuentes.
If BeardGit saves you a tab, drop a ⭐ on the repo — it's how the project gets seen.