Every repo remembers
its own account.
Bind a repo to an account on GitHub.com and GitLab once. Every commit and push goes out as the right you — until you rebind it.
The problem
The wrong author, on the wrong repo
Work, personal, clients — all in the same week. Juggling identities with .gitconfig hacks, SSH key aliases and browser profiles ends the same way: a commit lands under the wrong name.
HydraTree makes identity a property of the repository, not the machine. Bind once on GitHub.com and GitLab, and the right account is used for everything until you change it.
How it works
Three moves, then it's automatic
Sign in to your accounts
Connect GitHub.com accounts with OAuth and GitLab hosts with a PAT. Label each one — personal, work, client-a. One expired account never breaks the others.
Bind each repo once
When you clone or add a repo, it binds to one account and wears its badge. The binding holds until you rebind it in Settings → Repository.
Commit as the right you
Commit author and push credential follow the repo's bound account — no per-machine .gitconfig swaps to keep identities straight. (Pushes over SSH use your own SSH keys; use an HTTPS remote to push as the bound account.)
What's inside
A full Git client, multi-account aware
Multi-account aware workflow so every commit goes out as the right you across GitHub.com and GitLab.
Many accounts, signed in at once
GitHub.com and GitLab accounts stay authenticated side by side, each with its own label and badge. An expired token flags just that account.
Every repo keeps its account
Each repository binds to one account on GitHub.com and GitLab. The binding survives switching repos, and HydraTree never silently rebinds behind your back.
Blocked before a bad push
HydraTree refreshes account and repo permissions on launch. Commit and push are blocked when the bound account is missing or needs re-authentication. Push is also blocked when the remote reports no access.
A GitHub Desktop–inspired flow
A single Changes list with per-file commit selection, branches, history and diffs, plus fetch, pull and push. GitHub pull requests open in-app; GitLab merge requests open in your browser.
Branch out with worktrees
View, create and switch worktrees from any branch. Each one inherits its parent repository's bound account automatically.
Apple Silicon & Windows
One cross-platform desktop app for Apple Silicon and Windows x64. Installed desktop builds check GitHub Releases for updates. Windows installs the update in the app; on macOS HydraTree tells you a new version is out, and you update with Homebrew or by downloading it.
Unlike typical Git clients
Built for multi-everything
Most desktop Git apps assume one signed-in identity. HydraTree is built for people who live across accounts, hosts, and parallel worktrees.
Many accounts, one app
Stay signed into personal, work, and client accounts at once — GitHub.com via OAuth (optional PAT) and GitLab.com or self-hosted GitLab (HTTPS) via PAT. Switch repos without logging out of everything else.
Per-repo identity binding
Each repository remembers its own account for commit author and push credential. The binding survives branch switches and repo switches; HydraTree never silently rebinds behind your back.
Push guardrails that actually block
Commit and push are blocked when the bound account is missing or needs re-authentication. Push is also blocked when the remote reports no access.
Worktrees that inherit the binding
Create and switch worktrees from any branch. Each worktree keeps the parent repository's bound account — so parallel work still commits as the right you.
Cross-host repository migration (experimental)
Off by default; turn it on in Settings → Beta features. It copies a repository's branches and tags to another GitHub or GitLab account in one guided flow, with a preview of every branch it would change. It has not been validated against live hosts yet, so use it only on repositories you can afford to lose: destination branches and tags may be replaced or deleted. Pull requests, issues and other host data stay where they are.
Multi-host workflow, not GitHub-only
GitHub pull requests open in-app; GitLab merge requests open in the browser. One desktop client for both hosts instead of juggling separate tools and browser profiles.