One branch, many repos,
zero git worktree incantations.

Arborist turns the multi-step ritual of cloning repos and hand-typing git worktree add into a single guided command. Pick your repositories, and it handles the rest — safely.

Install Arborist See it in action
~/work/acme
 

Why Arborist

Not just a wrapper around git worktree

A guided workflow tool for multi-repo development — each card below is something you stop doing by hand.

01

One guided command

arb new feature/my-change asks which repositories you want, shows a searchable multi-select picker, and creates a worktree for the branch in every repo you choose.

$ arb new feature/my-change

? Select repositories ›
  ◉ acme/web-app
  ◉ acme/api
  ◯ acme/design-system
02

Clones what’s missing

Arborist discovers your repos through the GitHub CLI, reuses the ones already on disk, and clones the ones that aren’t. It uses your existing gh auth — it never stores tokens.

✓ acme/web-app  already cloned
⠿ acme/api      cloning… done
✓ fetched latest refs
03

Predictable, tidy paths

Every worktree lands in the same place: <root>/<repo>/<branch>, with branch names sanitized for the filesystem. No more guessing where a checkout went.

worktrees/
  web-app/feature-my-change/
  api/feature-my-change/
04

Safe by default

Destructive actions show exact paths and ask first. Dirty worktrees are never silently deleted — arb remove warns about uncommitted changes and requires confirmation.

! web-app has uncommitted changes
? Remove 2 worktrees? (y/N)
05

Ready to work, instantly

After creating worktrees, Arborist runs your configured setup commands — pnpm install, uv sync, whatever your workspace needs — then arb open drops you into your editor.

▸ setup: pnpm install ✓
$ arb open a1 --cursor
✓ opened in Cursor

Workflows

A day with arb

Three commands cover the whole lifecycle of a branch.

1 Start a branch everywhere

arb new
 

2 Find it, open it

arb list · arb open
 

3 Clean up safely

arb remove
 

Before / after

The ritual vs. the command

The same outcome — a worktree per repo for your branch — by hand and with Arborist.

Without Arborist × every repo

the hard way
$ gh repo clone acme/api && cd api
$ git fetch origin
$ git worktree add \
    ../worktrees/api/feature-my-change \
    -b feature/my-change origin/main
$ cd ../worktrees/api/feature-my-change
$ cp ../../../api/.env .
$ pnpm install
# …now repeat all of it for web-app and admin

With Arborist all repos at once

the arb way
$ arb new feature/my-change
# pick repos with space + enter
✓ cloned what was missing
✓ created 3 worktrees
✓ copied .env files
▸ setup: pnpm install ✓

FAQ

Questions, answered

How is this different from plain git worktree?

git worktree operates on one repo and makes you manage paths yourself. Arborist adds the workflow around it: a multi-repo picker, clone-if-missing, predictable <root>/<repo>/<branch> paths, copied .env files, per-repo setup commands, and safe removal — in one command.

Does it store my GitHub credentials?

No. All GitHub access goes through the GitHub CLI (gh auth login). Arborist never asks for, stores, or logs tokens — and there's no telemetry.

Does it run code from repositories it clones?

Never automatically. Arborist only runs the setup commands you wrote in your own trust-checked workspace config — it doesn't look inside a clone for scripts to run or auto-install dependencies.

What if the branch already exists?

Arborist reuses an existing local branch, tracks a remote one, or creates a new branch from the default branch — whichever applies. If a worktree already exists for the branch, it's skipped safely and the existing path is shown.

What platforms are supported?

Prebuilt binaries for macOS and Linux (amd64 + arm64); Windows builds from source. GitHub is the only provider for now, via the GitHub CLI.

Can it delete my work?

Not without asking. Removal shows the exact paths, requires confirmation, and never touches a worktree with uncommitted changes unless you explicitly pass --force.

Get Arborist

One command installs the prebuilt binary for your platform (macOS or Linux) and verifies its checksum. You’ll need Git and the GitHub CLI (gh auth login).

curl -fsSL https://raw.githubusercontent.com/jjacoblee/arborist/main/install.sh | sh

Then: arb init --owner <owner>arb new feature/example-change · Read the full guide · Or grab a binary from the releases page