Worktrees, remote repos and the Git you use every day.

Everything Mergepond does today, grouped by the job it does for you, each with a link to its reference page and a guide.

Worktrees and agents

Give every branch, and every coding agent, its own folder, then see at a glance which ones need you.

Worktrees that set themselves up

Create a worktree from a new branch, an existing one or a pull request number. Mergepond picks the folder, then copies your .env files, links node_modules and runs your install command, so the new checkout is ready to work in.

New worktree
../api.worktrees/
  • Copy .env files
  • Link node_modules
  • Run pnpm install
api
main
feat/billing-v2
fix/flaky-tests Ready
  • The folder comes from a pattern, ../<repo>.worktrees/<branch> unless you change it.
  • A setup recipe has three kinds of step: copy files, link files and run commands. Each one shows its progress as it runs.
  • Commands run in your login shell inside the new worktree.
  • The pattern and recipe are saved in .mergepond.local.toml, which only you have, or in .mergepond.toml to share them with your team.
  • ⌘N creates a worktree; ⇧⌘N creates one from a pull request.

A board for every worktreePro

The Worktrees tab shows every worktree of the repo with its branch, its state and when it last had a commit. Run a coding agent in each one and the board tells you which are still working, which are ready for you to review, and which are merged.

The Worktrees tab in its Board layout: every worktree of the repo, in a column by its state.
  • Three layouts: Board (columns by state), Grid (most recent first) and List (a table of every worktree).
  • Open a worktree in its own window, or in this one, push it, open it in Terminal or reveal it in Finder.
  • ⌘-click or tick worktrees to select several, ⇧-click to select a run, then remove them together.
  • ⌘3 shows the Worktrees tab.

Coding agents make their own worktrees

Mergepond includes pond, a command line tool and MCP server. Claude Code, Codex and other agents use it to start each task in its own worktree, set up by your recipe, and to mark it working, ready for review or done, so you can see where each one is.

  • Claude Code: /plugin marketplace add Webb-Ventures/mergepond-plugins adds the tools, a skill and hooks.
  • Codex: codex mcp add mergepond -- pond mcp. Any other agent can use pond mcp or the pond command.
  • You choose per repository whether agents always use a worktree, only when you ask, or ask each time.
  • Agents can’t remove worktrees; you do that.
  • Free. Mergepond installs pond on machines you reach over SSH too.

Agent states at a glancePro

Each worktree’s state comes from Git, so it works with any coding agent, or none. Teal means it is working, amber means it needs you, lily means it is merged or done.

Working 3

  • agent/claude-24 changed files
  • agent/claude-3Setting up
  • hotfix/webhook-retryRebase paused

Ready for review 1

  • fix/flaky-tests2 commits to push

Merged or gone 2

  • feat/ssh-helperMerged
  • chore/bump-depsBranch gone on the remote
The board’s Board layout: six worktrees, sorted by what their branches are doing.
  • Working: setting up, files changed, or up to date with nothing to push.
  • Needs you: commits ready for review or to push, or a merge or rebase paused on a conflict.
  • Merged or gone: the branch is merged, deleted on the remote, or the folder is missing.
  • A branch that only points at the tip of main counts as new, not merged.

Clean up merged worktrees without losing workPro

Clean up gathers the worktrees that are merged, whose branch is gone from the remote, or whose folder is missing, and removes them in one go. Branches stay, and Mergepond stops to ask before anything with uncommitted changes or unpushed commits goes.

Clean up worktrees

These are merged, their branch is gone from the remote, or their folder is missing. Branches stay.

  • Merged, 1.4 GB
  • Branch gone on the remote, 812 MB
  • Folder is missing
  • Never offers the main worktree or the one open in this window.
  • Shows how much disk each worktree uses before you remove it.
  • Removal is usually instant, even with a large node_modules: the folder moves aside and its files are deleted in the background.
  • A worktree with uncommitted changes needs a second, explicit confirmation.

Repos anywhere

Work on the repo on your dev box or a cloud machine as if it were on your Mac.

Repos on other machines, over SSHPro

Open a repository on any Linux or macOS machine you can SSH into, and use the same history, changes and worktree views as for a local one. Git runs on that machine, next to the files, so nothing is synced or mirrored.

Opening a repository on another machine: type host:path or pick an SSH host.
  • Type host:path in Open, or pick a host from your ~/.ssh/config.
  • Connects with your system ssh, so your config, keys, agent, ProxyJump and known_hosts all apply.
  • Works with Linux and macOS hosts on x86_64 and ARM.
  • Workspace rules can match an SSH host, so every repo on dev-box opens in the same window.

A small helper, not a server

On first connect Mergepond copies a small helper, pond-agent, to the host. It runs Git there as your SSH user and talks to Mergepond over the SSH session, so it opens no ports and stops when the session ends.

Mergepond on your Mac

pond-agent on dev-box, as you

Requests go down the SSH session you already use, and Git’s answers come back up it. Nothing listens on a port.
  • Lives in ~/.mergepond/agent/ on the host, one build per Mergepond version.
  • Runs in your environment, with your Git config and credentials.
  • No daemon and no listening port: it lives as long as the SSH session.

Projects and people

A window and a Git identity for each part of your life, so work commits never go out under a personal email.

A window per project

A workspace groups the repos for one client, company or side project. Each workspace opens in its own window, and repos join the first workspace whose rule they match.

Workspaces: each has a colour, an identity and rules that decide which repos join it.
  • Rules match a folder (~/work/acme/**), a remote URL (github.com/acme/*), an SSH host or a repo tag.
  • Pin the repos you want in a workspace’s list.
  • Mergepond Free includes three workspaces; Pro has no limit.

The right name on every commit

Each workspace has a Git identity, and one identity can serve many workspaces. Before each commit Mergepond checks the identity matches the workspace and warns you if it doesn’t, with a button to switch.

Add proration when a plan changes mid-cycle

Committing as Riley Webb <riley.home@example.com>

This repo is in the Acme workspace, which commits as riley@acme.dev.

Signed and committing as your Acme identity.
  • An identity holds a name, an email, an optional signing key (GPG or SSH) and an SSH key for pushing and pulling.
  • The commit box always shows who you are about to commit as.
  • A repo can override its workspace’s identity.

Tell windows apart at a glance

Give each workspace one of eight colours. It runs as a thin edge along the top of the window, so two windows side by side never get mixed up.

Acmeapi
Side projectspond-notes
Acme’s colour
  • Pick the colour when you add or edit a workspace.
  • The colours adapt to the colour scheme you use.

Everyday Git

The history, staging, rebase and conflict tools you expect from a desktop Git client, with fewer dialogs and an undo for anything destructive.

Stage what you mean to

Changes is the first tab: the files you changed on one side, what is staged on the other, and the diff of the selected file. Stage a whole file or a single hunk, then commit.

The Changes tab: unstaged and staged files on the left, the diff on the right.
  • Space stages or unstages the selected file; ↑ and ↓ move through the list.
  • Files with several hunks get a Stage hunk button on each one.
  • Amend the last commit, and sign commits with the identity’s GPG or SSH key.
  • ⌘↵ commits. An undo puts the changes back, staged.

Rebase by dragging

Interactive rebase opens as a list of your commits. Drag a commit to move it, set each one to pick, reword, squash, fixup, drop or edit, and rewrite messages in place.

Interactive rebase onto main
  • picka3f9c21Add proration when a plan changes mid-cycle⋮⋮
  • pick7be0d14Move invoice totals into a pure function⋮⋮
  • pick4c1d9e2Fix a typo in the proration comment⋮⋮
  • pick2fe6b98Handle Paddle subscription webhooks⋮⋮
Drag a commit to reorder it, then set it to fixup to fold it into the one above.
  • ⌥↑ and ⌥↓ move the selected commit from the keyboard.
  • Mergepond explains a plan Git would refuse, like squashing the first commit, before you start.
  • A finished rebase can be undone.

Resolve conflicts one at a time

When a merge, rebase, cherry-pick or revert stops on a conflict, Mergepond shows your side and theirs for each one. Keep yours, theirs or both, and the file updates as you choose.

src/billing/proration.ts1 conflict
Yours, feat/billing-v2
import { Money } from "../money";
Theirs, main
import { daysBetween } from "./days";
Result Conflict resolved
Choose a side above, or keep both.
  • Keep both in either order: yours first or theirs first.
  • When one side deleted a file or it is binary, keep one side’s file or delete it.
  • Continue, skip or abort from the same place, and undo the whole operation afterwards.

Diffs that read like code

Every changed file opens as a diff with its hunks laid out and code highlighted, in the Changes tab and for any commit in History.

History: the commit graph, and the selected commit’s files and diff.
  • Keywords, function names and literals are highlighted in code files; prose stays plain.
  • Binary files and mode-only changes say so instead of showing an empty diff.
  • Click any file in a commit’s details to see its diff.

Blame, stashes, LFS and submodules

The rest of Git is here too: who last changed each line, every stash in the repo, tags, submodules and Git LFS.

  • Blame and file history share one sheet; switch between them.
  • Stash, apply, pop and drop. Dropping or popping a stash can be undone.
  • See each submodule’s state and bring it up to date.
  • See whether a repo uses Git LFS and pull its LFS files.
  • Create, delete and push tags. A deleted tag can be restored.

Review a pull request in its own folder

Type a pull request’s number and Mergepond fetches it into a branch named pr-<number> and opens it in a new worktree, set up and ready to run, while your own branch stays as it was.

  • Fetches pull/<number>/head from your default remote, the ref GitHub publishes for every pull request.
  • ⇧⌘N, or Create worktree from a pull request in ⌘K.

Everything from the keyboard

⌘K opens a palette of every command that applies right now: branches, history, worktrees, remotes, workspaces and view settings. ⌘P switches between your repos.

The command palette, opened with ⌘K, listing what you can do right now.
  • ⌘1, ⌘2 and ⌘3 show Changes, History and Worktrees.
  • ⇧⌘↑ pushes, ⇧⌘↓ pulls and ⌥⌘F fetches.
  • ⌘T opens a repo in a new tab and ⌘W closes it; ⇧⌘] and ⇧⌘[ move between tabs.
  • ⇧⌘B creates a branch, and ⌥⌘T opens the repo in Terminal.

Make it yours.

Four colour schemes. Choose one in Settings, or let Mergepond follow macOS Light and Dark. More about colour schemes

Deep water and teal, the Mergepond look.

How colour schemes work

  • Four schemes: Pond, Dark, Greyscale and Light.
  • Follow macOS switches between Light and Dark with the system, and is on for new installs.
  • Workspace colours and the commit graph adapt to the scheme.

Weighing Mergepond against the client you use now? See how it compares with Fork, GitHub Desktop, Tower and others.

Try it on your busiest repo.

Free for local repos, with no account and no trial clock. Mac only for now. Windows and Linux are coming soon.