December 10, 2025
by
James Fishwick
6 min read
I built a git worktree manager because I couldn't find a simple one.
The problem hit me when running multiple AI coding agents at once—one was refactoring accessibility code while I needed to review the current
implementation for a bug. Same files, different contexts. I couldn't commit the half-done work, couldn't stash and lose the agent's state, couldn't
review without a clean checkout.
Git worktrees solved this, but the syntax was awkward. Branchyard exists and is great if you want VS Code integration and git hooks, but I wanted
something I could drop in my dotfiles and understand in 20 minutes.
So I built gwt (git-worktree-utils):
• ~1K lines of bash, zero dependencies
• Source-based, lives in ~/.config
• One branch = one directory (keeps the mental model simple)
• Built-in cleanup for orphaned directories
Use cases beyond AI agents:
• Code review without losing your place
• Emergency hotfixes without stashing
• Running tests in one branch while coding in another
The pattern works: multiple branches in separate directories beats constant switching. No stashing, IDE state persists, contexts stay separate.
Project: https://github.com/jamesfishwick/git-worktree-utils
AI, LLMs, web engineering, open source, data science, Datasette, SQLite, Python and more