BeardGit

skill
Security Audit
Warn
Health Pass
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 10 GitHub stars
Code Warn
  • fs module — File system access in .github/workflows/release.yml
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This is a native desktop application designed to be an all-in-one interface for managing software repositories. It provides a unified window to handle code commits, pull requests, CI/CD pipelines, built-in terminals, in-app editing, and AI agent integration.

Security Assessment
Risk Rating: Medium. The application inherently handles highly sensitive data because it requires local filesystem access and manages source code repositories. It also directly executes shell commands via its integrated terminal features and makes network requests to interact with external Git hosting platforms. No hardcoded secrets were identified, and the automated rule scan confirmed no dangerous OS-level permissions are requested. A minor warning was flagged regarding filesystem access during its automated release workflows, though this is common for software build pipelines.

Quality Assessment
The project is actively maintained, with repository activity logged as recently as today. It features a comprehensive description and a polished manual indicating a serious development effort. Community trust is currently very low but growing, represented by only 10 GitHub stars. The licensing situation presents a minor concern; the automated scan returned an unasserted license status, while the project's manual indicates it operates under the CC BY-NC-SA 4.0 license. This Creative Commons license explicitly restricts commercial use, meaning this tool is not suitable for professional commercial environments.

Verdict
Use with caution — the application offers a polished, actively maintained experience with no immediate security red flags, but it carries a strict non-commercial license and inherently handles critical developer credentials.
SUMMARY

Your whole repo in one window — graph, PRs/MRs, issues, CI/CD, releases, terminals, AI agents, an in-repo HTTP workspace, and an in-app editor. Native desktop. macOS · Linux · Windows.

README.md

English · Español

BeardGit — your whole repo, in one window

BeardGit

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.

Latest release License CI Platforms

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.


§ 01 — Manifesto

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.


§ 02 — What you get

A canvas graph that scales

BeardGit canvas commit graph with branch lanes, merge curves, and author highlighting

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.


Forge-native for GitHub and GitLab

Pull request detail with CI pipeline status and inline review comments

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.


AI that runs in a worktree, not in your face

AI background run transcript inside a worktree with provider and prompt selection

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.


An .http workspace, in your repo

In-repo .http API testing workspace with environment files and response history

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.


An in-app code editor

In-app CodeMirror code editor with snippets, JSON lint and inline color pickers

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.


And the rest

  • Multi-repo tabs. Heavy state (repo, layout, watcher) loads only for the active tab. A dozen open repos cost the same as one. ⌘1…⌘9 jumps between them.
  • Real terminals. xterm.js + WebGL fed by a native Rust PTY. OSC 7 auto-links a terminal to the matching project tab. Foreground process polling detects when claude / codex / opencode start and updates the tab on the fly.
  • Themes and i18n. Light, dark, and custom JSON themes — every accent flows from CSS tokens, including the graph. English and Spanish ship via Paraglide; adding a locale is a JSON file.
  • A sidebar that's yours. Reorder navigation items, hide what you don't use, reset to the default. Layout persists app-wide.
  • Auto-update. Tauri updater on the stable channel with diagnostics for endpoint and last-check timestamp — so you can tell a 404 apart from a DNS hiccup without leaving the app.
  • Local-only logs. 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.

Who BeardGit is for

Five minutes from download to first commit. No accounts, no logins, no "BeardGit Cloud."

You'll like it if you:

  • Use both GitHub and GitLab and want them to feel the same.
  • Test APIs against the repo you're staring at and hate context-switching to Postman.
  • Run Claude Code / Codex / OpenCode and want them isolated in worktrees, not loose in your tree.
  • Care that your git client doesn't ship a 200 MB Chromium runtime to render a sidebar.
  • Want a polished GUI with Linux as a first-class platform, not an afterthought.

You probably won't if you:

  • Live entirely on git CLI and lazygit — BeardGit is GUI-first.
  • Need SVN, Mercurial, Perforce, or self-hosted Bitbucket — not supported.
  • Want a paid product with phone support and an enterprise SSO portal — that's not this.

BeardGit is free and source-available. The CC BY-NC-SA license blocks reselling BeardGit itself — using it commercially in your team is fine.


Install in 30 seconds

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. gh and glab are bundled — no extra setup needed.

First launch — unsigned builds (one-time setup)

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.appOpen → click Open in the confirmation, or use System Settings → Privacy & Security → Open Anyway.

Windows — "Windows protected your PC" (SmartScreen)

Click More infoRun anyway. The warning won't reappear on the same machine.


Building from source

Prerequisites

  • Git 2.x+ — required at runtime for write operations.
  • Rust stable — install via rustup.
  • Node.js 22+ — install from nodejs.org.

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

  1. Install Microsoft C++ Build Tools and select Desktop development with C++.
  2. Install the WebView2 Runtime.

Build and run

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
Tech stack and architecture
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 strategy

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.


Contributing

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.

Security

See SECURITY.md for our disclosure policy.

License

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.

Reviews (0)

No results found