Skip to content

willowGit worktree manager

Spin up isolated worktrees for Claude Code sessions. Switch between them instantly with fzf. See which agents are busy, waiting, or idle.

ww new + ww ls + ww status
ww new + ww ls + ww status
$brew install iamrajjoshi/tap/willow

Commands

Everything you need to manage worktrees and monitor AI agents.

$ ww new feature/auth --no-fetch
✨ Created worktree at ~/.willow/worktrees/myrepo/feature/auth
   Branch: feature/auth (from main)

How it works

Three steps from clone to full agent orchestration.

1

Clone

Set up a repo for worktree-first workflow with a single command.

ww clone git@github.com:org/repo.git
2

Create worktrees

Spin up isolated directories for each task. Start Claude Code in each.

wwn feature/auth && claude
3

Monitor agents

See all your agents at a glance. Switch between them with fzf.

ww status

Directory structure

Everything lives under ~/.willow/ — bare clones, worktrees, and agent status files.

~/.willow/
~/.willow/
├── repos/bare clones (shared git database)
│ └── myrepo.git/
│ └── willow.jsonper-repo config
├── worktrees/isolated directories, one per branch
│ └── myrepo/
│ ├── main/
│ ├── auth-refactor/BUSY
│ └── payments/WAIT
├── status/Claude Code agent status
│ └── myrepo/
│ ├── auth-refactor.json
│ └── payments.json
└── hooks/hook scripts
└── claude-status-hook.sh

Agent status

After running ww cc-setup, Claude Code automatically reports its state.

🤖 BUSY✅ DONE⏳ WAIT🟡 IDLE
ww status
ww status

Install

bash
brew install iamrajjoshi/tap/willow
bash
go install github.com/iamrajjoshi/willow/cmd/willow@latest
bash
# Add to .bashrc / .zshrc
eval "$(willow shell-init)"

# fish
willow shell-init | source