Thanks to visit codestin.com
Credit goes to worktrunk.dev

Worktrunk

Git worktree management for parallel AI agent workflows

GitHub stars
Worktrunk logo

Worktrunk

Worktrunk is a CLI for git worktree management, designed for running AI agents in parallel.

Worktrunk's three core commands make worktrees as easy as branches. Plus, Worktrunk has a bunch of quality-of-life features to simplify working with many parallel changes, including hooks to automate local workflows.

Scaling agents becomes trivial. A quick demo:

Worktrunk demo showing wt list, wt switch, and hooks
Listing worktrees, switching, cleaning up

Context: git worktrees

AI agents like Claude Code and Codex can handle longer tasks without supervision, such that it's possible to manage 5-10+ in parallel. Git's native worktree feature give each agent its own working directory, so they don't step on each other's changes.

But the git worktree UX is clunky. Even a task as small as starting a new worktree requires typing the branch name three times: git worktree add -b feat ../repo.feat, then cd ../repo.feat.

Worktrunk makes git worktrees as easy as branches

Worktrees are addressed by branch name; paths are computed from a configurable template.

Start with the core commands

Core commands:

Task Worktrunk Plain git
Switch worktrees wt switch feat cd ../repo.feat
Create + start Claude wt switch -c -x claude feat git worktree add -b feat ../repo.feat && \ cd ../repo.feat && \ claude
Clean up wt remove cd ../repo && \ git worktree remove ../repo.feat && \ git branch -d feat
List with status wt list git worktree list (paths only)

Workflow automation:

Expand into the more advanced commands as needed

A demo with some advanced features:

Worktrunk omnibus demo: multiple Claude agents in Zellij tabs with hooks, LLM commits, and merge workflow
Multiple Claude agents in parallel with hooks, LLM commits, and merge

Install

Homebrew (macOS & Linux):

brew install worktrunk && wt config shell install

Shell integration allows commands to change directories.

Cargo:

cargo install worktrunk && wt config shell install
Windows

On Windows, wt defaults to Windows Terminal's command. Winget additionally installs Worktrunk as git-wt to avoid the conflict:

winget install max-sixty.worktrunk
git-wt config shell install

Alternatively, disable Windows Terminal's alias (Settings → Privacy & security → For developers → App Execution Aliases → disable "Windows Terminal") to use wt directly.

Arch Linux:

paru worktrunk-bin && wt config shell install

Quick start

Create a worktree for a new feature:

wt switch --create feature-auth
 Created branch feature-auth from main and worktree @ repo.feature-auth

This creates a new branch and worktree, then switches to it. Do your work, then check all worktrees with wt list:

wt list
  Branch        Status        HEAD±    main↕  Remote⇅  Commit    Age   Message
@ feature-auth  +         +53                         0e631add  1d    Initial commit
^ main              ^                         ⇡1      0e631add  1d    Initial commit

 Showing 2 worktrees, 1 with changes, 1 column hidden

The @ marks the current worktree. + means uncommitted changes, means unpushed commits.

When done, either:

PR workflow — commit, push, open a PR, merge via GitHub/GitLab, then clean up:

wt step commit                    # commit staged changes
gh pr create                      # or glab mr create
wt remove                         # after PR is merged

Local merge — squash, rebase onto main, fast-forward merge, clean up:

wt merge main
 Generating commit message and committing changes... (2 files, +53, no squashing needed)
  Add authentication module
 Committed changes @ a1b2c3d
 Merging 1 commit to main @ a1b2c3d (no rebase needed)
  * a1b2c3d Add authentication module
   auth.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
   lib.rs  |  2 ++
   2 files changed, 53 insertions(+)
 Merged to main (1 commit, 2 files, +53)
◎ Removing feature-auth worktree & branch in background (same commit as main, _)
 Switched to worktree for main @ repo

For parallel agents, create multiple worktrees and launch an agent in each:

wt switch -x claude -c feature-a -- 'Add user authentication'
wt switch -x claude -c feature-b -- 'Fix the pagination bug'
wt switch -x claude -c feature-c -- 'Write tests for the API'

The -x flag runs a command after switching; arguments after -- are passed to it. Configure post-start hooks to automate setup (install deps, start dev servers).

Next steps

Further reading