Why we built Mergepond

There are good Git clients for the Mac already, and we have paid for most of them. Mergepond exists because the way we work changed faster than they did: several branches checked out at once, repositories that live on other machines, and two or three Git identities a day. This is what we wanted, what we looked at, and what we decided to build.

What changed in how we work

Three things happened to our days over the last couple of years.

First, worktrees stopped being a trick and became the normal state. We review a pull request in one folder while our own change runs in another. We keep a release branch checked out permanently. And since coding agents arrived, we routinely have four or five branches being edited at once, each in its own folder, most of them by something that is not us. git worktree has been in Git since 2015, and it handles all of this; the clients we used treated it as an afterthought, when they acknowledged it at all.

Second, the repository is often not on the Mac. A dev box in a data centre, a Linux workstation under a desk, a build server with the only copy of a generated tree. We had been using Git clients on the local clones and the terminal for everything remote, which meant the GUI was for the easy half of the work.

Third, we commit as more than one person. A client project wants the client email and a signing key; a personal project wants neither; an open-source contribution wants a third. A wrong email in a commit is a small thing that is annoying to fix and embarrassing to leave, and the only defence we had was remembering.

What we looked at

We want to be fair here, because the alternatives are good and some readers should pick them.

Fork is a fast, well-made client for Mac and Windows, listed at $59.99 with a free evaluation. Its interactive rebase, its conflict resolver and its image diffs are excellent, and it is probably the right choice if you work in one folder on one machine and want a client that gets out of the way. Our guide on switching from Fork is honest about the features it has that Mergepond does not.

Tower is a polished client with a long history and a thoughtful interface. It is sold as a yearly subscription, from $69 a year for an individual at the time of writing, with Mac and Windows in every plan. If you want a company behind your Git client with the support that implies, it is a serious option.

Both do everyday Git very well. Neither puts worktrees, remote machines or multiple identities at the centre, and we understand why: most Git users still work in one folder, on one machine, as one person. We no longer do, and we suspected a growing number of people did not either.

The command line, meanwhile, does everything. git worktree add, ssh host git status, git -c user.email=…. We did not want to replace the terminal; we open it from Mergepond with ⌘⌥T several times a day. We wanted the state of all of it on one screen.

What we decided to build

We started with the view we could not get anywhere else: every worktree of a repository as a card, sorted by what it needs. Working, Ready for review, Merged or gone. The column is computed from Git alone, uncommitted changes, commits ahead of the upstream, whether the branch has merged or its remote has been deleted, so it works for a worktree you are typing in and for one an agent is typing in, with no plugin and no integration. Creating a worktree is one sheet, and a setup recipe copies .env, links node_modules and runs the install so the folder is usable when the sheet closes.

Then remote repositories. Mergepond runs your system ssh, so your config, keys and jump hosts apply, and copies a small helper, pond-agent, to the host on first connect. It runs Git there as your SSH user, speaks over the SSH session's own stdin and stdout, opens no ports and exits when you disconnect. There is no sync and no cloud copy of your code, because there is nothing to sync: the repository stays where it is.

Then workspaces and identities. A workspace is a window with a colour along its top edge, rules for which repositories belong in it, and an identity those repositories should commit as. Before each commit Mergepond checks the identity matches and says so if it does not. It is a small feature, and it is the one that has saved us the most embarrassment.

Under those, the everyday Git has to be at least as good as what we were leaving. Staging by file or hunk, an interactive rebase you plan by dragging rows, a conflict resolver that keeps ours, theirs, both or the base per conflict, a history you can filter by message, author, path and date, and a command palette that does all of it from the keyboard. We think it is good. We also know where it is thinner than Fork and Tower, and we say so in the docs rather than hoping you will not notice.

How we sell it

Mergepond is free for local repositories, with up to three workspaces, and we intend it to stay that way. Pro is a one-time purchase that adds repositories over SSH, unlimited workspaces and the worktree board, with fixes for life and new features for the first year. Students and open-source maintainers get Pro free. We chose a one-time price because we prefer paying that way ourselves, and because a client you use every day should not stop working when a card expires.

Mergepond is Mac only for now. Windows and Linux are coming.

What we are unsure about

We do not know yet how many people work the way we do. Worktrees still have a reputation as an advanced feature, and a client that leads with them may be leading with something most people have not tried. The bet is that agents change this: once something else is editing your repository, a folder per branch stops being advanced and starts being obvious.

We also know that the first version of a product is mostly a list of things it does not do yet. Line-level staging, a collapsible graph, reflog, and whatever you write to tell us about are on that list. The changelog is where you can watch it shrink.

If you have read this far, the most useful thing you can do is open a repository you actually work in, press ⌘3, and tell us what the board got wrong. hello@mergepond.dev reaches us directly.