new v0.2.0 is out — clone straight from GitHub, GitLab, or Bitbucket using the credentials already on your machine, plus a commit-identity fix and a security hardening pass. release notes ↗

┌─ [ 01 ]  ·  a desktop git client for people who live in many repos

Workspaces of repos. Worksets of work.

Two orthogonal ideas. Workspaces are durable groupings of repos — "these are Platform," "these are Payments" — the lens you use to fetch, status, and reset across a whole bucket at once. Worksets are tickets you can resume across repos, pinned to a feature branch — start, ship, archive, reset. Both run as plain git commands in the repos you already have, never inside .git.

over·git  — a client that sits over your git repos, never inside .git. Stop using it anytime; your repos behave the same in any other tool.

  • macOS
  • windows
  • linux
  • Electron · React · TypeScript
overgit

api-gateway

~/payments/api-gateway

⎇ feature/rate-limit ▾ +34 −5 3 files Fetch Pull Push ⌘P Abandon…
✦ Review with AI

changes 3

  • Amiddleware/rateLimit.ts
  • Mroutes/login.ts
  • A__tests__/rateLimit.spec.ts

committing as you <you@example.com> · system git config

feat: add rate limiter to /api/login
✦ Suggest with claude Commit 3 ⌘↵
A middleware/rateLimit.ts +22 −0
@@ new file @@+ import { bucket } from "./bucket";++ export const loginLimiter = bucket({+   cap: 10,+   per: "60s",+   key: (req) => req.ip + ":" + req.body.username,+ }); @@ routes/login.ts @@+ import { loginLimiter } from "../middleware/rateLimit";- router.post("/api/login", login);+ router.post("/api/login", loginLimiter, login);

Two stacks of grouping. Workspaces above, worksets below.

[ 02 ]  ·  inside the window

Built for the day your work spans four repos.

GitHub Desktop, Tower, and Fork are all one-repo-at-a-time. If your work spans services + shared libs + infra, you end up scripting your own "checkout feature/x everywhere" flow. Overgit fills that gap with two orthogonal ideas — workspaces for durable groupings, worksets for tickets — without ever writing inside .git.

01

Workspaces — durable groupings of repos

A workspace is an identity-bearing bucket: "these repos are Platform," "these are Payments." It's the sidebar's collapsible section and the target for bulk actions across the whole group. Permanent. A repo can live in many workspaces — small shared libs are the common case.

02

Worksets — tickets you can resume across repos

A workset is a transient unit of in-flight work: "ship the auth migration across api-gateway, billing-svc, and ledger-core this week." Bound to a feature branch. Sits above the workspace list in the sidebar, waiting for you to pick up where you left off. Archive when shipped. Reset when done.

03

Overlay, not metadata

Overgit never writes inside .git. No manifest, no .overgit folder, no synthetic root, no special config. Workspaces and worksets live in overgit's settings file, not in your repos. Stop using overgit any time and your repos behave the same in any other tool.

04

Workspace-wide actions

Fetch every repo in a workspace. Status every repo. Reset every repo to its default branch — fan-out fetch → switch → hard-reset to origin/<default> across the whole group. Workspace-wide PR list via gh pr list --json merged into one view.

05

Workset spin-up

Pick the repos the ticket touches. Sync each to its default → pull → create the feature branch — all in one workflow. Per-repo outcomes if any of them fail. Stop scripting for d in */; do git checkout ….

06

Workset archive — done means done, not gone

Shipped the ticket? Archive the workset. It vanishes from the active sidebar into a collapsed "Archived" section. The repos on disk are unchanged — overgit just stops surfacing the grouping. Reactivate any time. Three weeks later, when oncall asks "how did we ship that?", it's right there.

07

Workset reset — clean teardown

One action fans out fetch → switch back to origin/<default> → hard-reset → delete the workset's bound branch across every member. Cleans up the whole feature in one shot. Same surface as workspace reset, scoped to just the repos the workset touched.

08

Smart reset safety

Both reset flows detect repos with commits not on origin/<default> and stop before the hard-reset would erase them. You get a [force reset (lose N)] / [skip] choice per repo, with the commit count visible. Never a silent disaster.

09

Workset-wide commit & push

Type a message once, commit every dirty member, push every branch — per-repo outcomes if any of them fail. Same surface for fetch-all and "open PRs everywhere" via gh, scoped to the workset.

10

Branch picker, with brains

⌘B opens a searchable popover. Local + remote branches grouped, ↑↓/Enter, inline create-branch with optional sync-and-pull, per-branch cherry-pick with commit-list multi-select.

11

Command palette

⌘K opens a context-aware palette: switch / create branches, jump to repos, workspaces, and worksets, search files, run repo actions (stage all, fetch, pull, push, AI review).

12

AI review & suggest

Detects claude, codex, and gemini. Pipes diffs into the chosen CLI in non-interactive mode. Suggest drafts a conventional-commit message from the staged diff and drops it into the commit input.

13

Per-repo tabs & branch graph

Changes / History / Files / Graph / Stash. Multi-select with checkboxes, bulk action bar (Stage / Stash / Discard). File editor sandboxed to registered repos with hljs syntax highlighting. Per-lane colored branch graph with ref labels.

14

Keyboard first · your CLI auth

⌘K palette · ⌘B branches · ⌘N new branch · ⌘1–4 tabs · ⌘R refresh · ⌘\ sidebar · ⌘, settings. Whatever auth your claude, codex, gemini, and gh already have is the auth Overgit uses. Nothing leaves your machine via Overgit.

15

Clone from your forge

The clone sheet has source tabs: paste a URL as before, or browse the repos your existing credentials can already reach — GitHub via your gh login (orgs and collaborator repos included), GitLab via glab or your credential helper, Bitbucket via your credential helper. Filter, hit enter, and the URL and folder name fill themselves in. An https/ssh toggle that remembers.

Overgit never asks for, stores, or transmits a token of its own — it reuses what is already on the machine, and no credential is exposed to the renderer. A forge with no usable credential tells you the exact command that fixes it.

[ 03 ]  ·  what a workspace looks like

Group the repos once. Act on all of them.

A workspace is a durable bucket of repos you treat as one. Aggregate health at a glance — who's dirty, who's ahead, who's behind — then fetch all, status all, or reset all in a single action. Click any row to drop straight into that repo.

payments-platform workspace

4 repos in this workspace. Aggregate health below; click any row to open the repo.

Reset all Fetch all Edit Remove

1 dirty  ·  0 ahead  ·  0 behind

repo branch dirty ahead behind
api-gateway~/payments/api-gateway main 2 · ·
billing-svc~/payments/billing-svc main · · ·
ledger-core~/payments/ledger-core main · · ·
infra~/payments/infra main · · ·

one bucket · every repo · one action

[ 04 ]  ·  the workset lifecycle

Spin up. Ship. Reset everything.

A workset is a ticket pinned to a feature branch and the repos that branch touches. Create it once — overgit branches across every member in one move. Commit and push together. Open every PR with gh. When the work ships, one action fetches, switches back to origin/<default>, hard-resets every member, and deletes the bound branch — with per-repo safety checks for unmerged commits. The repos never know they're related. Overgit knows.

⎇ feature/rate-limit 4 repos · CLIs: gh
⚠ Pick up where you left off 2 of 4 repos drifted off this branch. Resume to checkout feature/rate-limit across them.
Resume
Branch2 / 4 on feature/rate-limit
Commitbranch first
Pushcommit first
Archive
repos 4 all loaded
dirty 0 all clean
ahead / behind 0 / 0 vs upstream
branch spread 2 branches 2 of 4 off feature/rate-limit

status  ·  one branch is the goal — sync the stragglers

  • api-gateway ~/payments/api-gateway feature/rate-limit
  • billing-svc ~/payments/billing-svc feature/rate-limit
  • ledger-core ~/payments/ledger-core main Sync to feature/rate-limit
  • infra ~/payments/infra main Sync to feature/rate-limit

one branch is the goal · resume the stragglers · then ship together

↺  one click later ·  Reset workset to default payments-platform · feature/rate-limit · 4 repos
  • api-gateway on main · clean fetched · switched · reset to origin/main · deleted feature/rate-limit
  • billing-svc on main · clean fetched · switched · reset to origin/main · deleted feature/rate-limit
  • ledger-core already on main nothing to reset · deleted feature/rate-limit
  • infra 2 unmerged commits hard-reset would erase 2 local commits not on origin/main · [force reset (lose 2)] · [skip]

Smart safety: any repo with commits not on origin/<default> stops and asks. The other repos still complete. You get per-repo outcomes, never a silent disaster.

[ 05 ]  ·  why overgit exists

Move across repos, own none of them.

Overgit optimizes for the day your work spans four repos at once — when juggling them by hand is the thing slowing you down. Workspaces and worksets are UI groupings, not files on disk: every action is a plain git command run in the repo's own directory, so you keep moving without inventing a meta-format that something else has to understand. If you uninstall overgit tomorrow, your repos forget it ever existed.

It's built for the realistic case — your work spans services and shared libs and infra, your teammates use whatever client they like, and the only thing the repos agree on is git. Overgit sits over the top, coordinates, and stays out of the way.

Sibling project of overcli. Written & maintained by Lionel Farr and Owen Farr. Open-source — contributors, issues, and PRs welcome.

┌─ [ 06 ]  ·  before you point it at real repos

Questions your team will ask.

Overgit is an overlay on git, not a replacement for it. Most of these answers follow from that one fact.

What does it cost?

Nothing. Overgit is free and open source under Apache 2.0 — no licence to buy, no per-seat pricing, no paid tier holding features back. There is no account to create and no server to pay for: it is a desktop app driving the git you already have.

Does it change anything inside our repos?

It never writes inside .git. Workspaces and worksets live in overgit's own state; everything it does to a repo runs as the plain git commands you'd have typed yourself.

What happens if we stop using it?

Uninstall it and your repos forget it ever existed — same branches, same remotes, same config. There is no migration to undo and nothing to export, because nothing was ever stored in the repo.

What's the difference between a workspace and a workset?

A workspace is a durable grouping of repos — "these are Platform," "these are Payments" — the lens you fetch, status, and reset across. A workset is a ticket you can resume across those repos, pinned to a feature branch: spin up, ship, archive, reset.

Is a reset going to eat someone's work?

Every destructive flow shows you exactly what it is about to discard, per repo, before it runs. That check is the reason the feature exists.

Does it work with our git host?

If it speaks git, yes — overgit doesn't care who hosts it. On top of that, cloning can browse GitHub, GitLab and Bitbucket directly, and pull request aggregation goes through the gh CLI. All of it rides on credentials already on the machine — your gh or glab login, or your git credential helper. Overgit never asks for, stores, or transmits a token of its own.

Can we audit or build it ourselves?

Yes — Apache 2.0, and the repo builds from source. There is no server component to review: it is a desktop app driving local git.

[ 07 ]  ·  grab a build

Unsigned, honest, and real.

Overgit is in beta. Builds are unsigned — no Apple Developer ID, no SmartScreen badge. Right-click is the trust ceremony. If that bothers you, the source is right there; build it yourself.

macOS arm64 + x64 .dmg  ·  .zip ~ 120 MB [download]
Windows x64 + arm64 NSIS installer ~ 110 MB [download]
🐧 Linux x64 + arm64 .AppImage  ·  .deb ~ 130 MB [download]