A Mac app for managing git worktrees

Create a worktree in two clicks, open it in the tools you already use, and see where each branch stands, whether it's on this Mac or another one of yours.

For Apple Silicon Macs. Signed, notarized, free and open source.

The app's window: a mint sidebar listing worktrees across projects, each with its changed files, commits ahead and pull request number. The open worktree shows launcher buttons, its pull request with checks passed and a Merge button, and its recent commits.
The same worktrees in the web app on a phone.

Worktrees are great. The chores around them aren't.

git worktree gives every branch its own folder, so an agent can work in one while you review a pull request in another. Setting each one up by hand is the slow part, and so is cleaning up after.

By hand

$ git worktree add -b fix-login \
    ../app-fix-login main
$ cp .env.local ../app-fix-login/
$ cd ../app-fix-login
$ pnpm install
$ cursor .

# a week later, for each one
$ git worktree remove ../app-fix-login
$ git branch -D fix-login

In Shigoto no Mori

The New worktree button with a menu under it listing projects to create the worktree in.
  1. Click New worktree
  2. Pick the project
  3. Carry-over and setup run for you

Create

A new worktree in two clicks

You get a fresh branch off your default branch, in its own folder, ready to open. Everything a new checkout usually needs comes along.

Carry-over

List the gitignored files a worktree needs, like .env.local, and each new one gets a copy or a symlink. A .worktreeinclude file works too.

Setup and teardown

Run pnpm install, or anything else, when a worktree is created, and your own cleanup when it's removed.

Start from anywhere

Hold Shift to branch from something other than the default branch, check out an existing branch, or start from an open pull request.

Named for you

Every worktree gets a placeholder name until you rename it:

  • brave-badger
  • gentle-gecko
  • quiet-quail

Keep track

See where every branch stands

Each worktree is one row in the sidebar. It shows enough to act on without opening anything.

One sidebar row: project shigoto-no-mori, a laptop badge, 40m ago, branch exp/terrier-sync, 7 changed files, 1 commit ahead, pull request #151 as 2 of 3, folder gentle-gecko. 1 2 3 4 5 6 7 8
  1. The project
  2. The Mac it lives on, when that's not this one
  3. Last activity
  4. The branch
  5. Files with uncommitted changes
  6. Commits not pushed yet
  7. Its pull request, and its place in a stack
  8. The folder
A worktree whose pull request is the first of a stack of three, marked Merged, with the other two listed above it and 'lands on main' below.

Review and commit

Read the diff of your uncommitted changes, one commit or the whole PR, then commit all of it or only part.

Merge from the app

Merge, squash or rebase, whichever your repo allows, including a whole stack at once. Then remove the worktree in one more click.

An inbox for active work

Shelve what you're not touching this week, and merged worktrees fold away on their own.

Launch

Opens in the tools you already use

Every worktree gets a row of buttons for the apps on your Mac: editors, terminals, Git clients and agent apps. Add your own shell commands too, per project or for all of them, like starting an agent CLI in that folder.

A worktree's launch row: buttons with app icons for cmux, Cursor, Finder, Ghostty, GitHub, GitHub Desktop, Rider, Terminal, VS Code, Xcode and Zed, and under them the project's package.json scripts.

The first nine have shortcuts. Scripts from package.json run in a built-in console with one click.

It doesn't replace your editor, terminal or agent. It opens them in the right folder.

Other machines

Worktrees on your other Macs, without the networking

Sign in on each Mac and their worktrees show up in the same list, looking just like the local ones. Machines connect directly on the same network, or through a tunnel when they aren't. There's no VPN, SSH key or router setting to deal with.

Forward a port

Start a dev server on the other machine and open it on localhost here. The files stay where they are.

Mirror a worktree

Keep a worktree in sync on two machines: every file, not only what git tracks, in both directions. Edit on either side and git agrees on both.

Transplant it

Move a worktree once, uncommitted changes included, then keep, shelve or remove the copy left behind.

The Devices page listing Studio Mac, Thinkpad and Mini with their connection state, their projects, and a port forwarded from Thinkpad.
The Transplant worktree dialog, moving fix-stale-locks from Studio Mac to Thinkpad with its carry-over files. A note says nothing on Studio Mac is deleted until the last step.

From a browser, or your phone

app.shigomori.com shows the same forest in any browser, with a layout made for phones. It doesn't hold projects itself. It works through the Macs on your account.

Read-only until you say otherwise

Other devices can see a machine's worktrees, but can't change anything on it until you turn on Allow control from other devices on that machine.

For agents

A CLI your agents can drive

The app comes with an sm command, mostly so coding agents can do what you do in the app: start a task in a fresh worktree, check its status, merge its PR and clean up, or hand it to another machine. Worktrees an agent makes show up in the app like any other.

Install the skills and your agent learns the workflow without you spelling it out each time. The same commands work by hand, too.

# teach your agent the workflow
$ npx skills add \
    https://github.com/sylophi/shigoto-no-mori

# what an agent runs for a task
$ sm wt create
$ sm wt status

# move it to another machine
$ sm wt send --to "Studio Mac"

# merge the PR and remove the worktree
$ sm wt land

Looks

Soft by default, plain if you prefer

The default look borrows from Animal Crossing, which is where the name comes from: Dōbutsu no Mori is "animal forest", and Shigoto no Mori is "work forest". If that's not for you, a neutral theme is one setting away. Both come in light and dark.

The neutral theme in light mode.
The default theme in dark mode.

Also included

The smaller things

Tidy the forest

One page lists every worktree with its size, age and merge state. Only merged worktrees with nothing uncommitted are ticked for removal. Anything else you pick yourself.

Auto-pull

Mark a checkout, like your main one, and it fast-forwards from its upstream whenever the app fetches.

Adopt existing worktrees

Worktrees made with plain git can be brought into the app.

Notes

Jot down what a worktree is for, right on its page.

Shelve

Put a worktree out of sight without deleting anything.

Quiet updates

Builds are signed and notarized. New versions download in the background and install the next time you restart.

Before you download

What it doesn't do

Mac only, Apple Silicon only.
There are no Windows, Linux or Intel builds. The web app runs in any browser, but it needs a Mac on your account to work through.
GitHub only, through gh.
Pull request status, merging and landing use the GitHub CLI. Other hosts aren't supported, and the app doesn't open pull requests for you.
Not an editor, terminal or agent.
The built-in console runs your project's scripts, not a general shell. Everything else opens in the apps you already have.
An account only for the multi-machine part.
Everything on a single Mac works without signing in.
Made by one developer.
It's built for the author's own daily work, so it's shaped by one person's habits and has no team features. Releases come often.

Download Shigoto no Mori

For Apple Silicon Macs. Free and open source.