Worktrunk logo  Worktrunk

Docs [![License: MIT OR

Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue?style=for-the-badge)](https://opensource.org/licenses/MIT)

CI

Codecov

Stars

[![maintained with

tend](https://img.shields.io/badge/maintained_with-tend-bba580?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwxNikgc2NhbGUoMC4wMTI1LC0wLjAxMjUpIiBmaWxsPSIjZmZmIiBzdHJva2U9Im5vbmUiPjxwYXRoIGQ9Ik02ODAgMTEyOCBjNjIgLTk2IDY5IC0xNzggMjAgLTI0MSAtMTcgLTIyIC0yMCAtNDAgLTIwIC0xMzQgbDEgLTEwOCAyMSAyOCBjMTEgMTYgMzAgNDcgNDIgNzAgMTIgMjIgMzIgNDkgNDYgNTkgMzcgMjcgMTE0IDM4IDE4NCAyNyA5MyAtMTUgOTQgLTE4IDQ0IC03OSAtNzIgLTg4IC0xMDkgLTExMyAtMTc2IC0xMTcgLTMxIC0yIC02NCAxIC03MiA2IC0yMyAxNSAyMSA1NiAxMDcgOTggNDAgMjAgNzEgMzggNjkgNDAgLTYgNyAtODggLTE3IC0xMjYgLTM3IC00OSAtMjUgLTEwMCAtNzggLTEyMSAtMTI1IC0xNSAtMzMgLTE5IC02NiAtMTkgLTE4OCAwIC0xNTcgOCAtMTk1IDUwIC0yMzIgMTcgLTE2IDM2IC0yMCA4NSAtMTkgNjIgMSA2MyAxIDczIC0zMiA5IC0zMiA5IC0zMyAtMjIgLTQwIC01MCAtMTIgLTEzMiAtNyAtMTY0IDEwIC00MCAyMSAtNzkgNjkgLTkyIDExNCAtNSAyMCAtMTAgMTAyIC0xMCAxODIgMCA4MCAtNSAxNjIgLTExIDE4NCAtMjIgNzkgLTEzNSAxNjYgLTIzNCAxODEgLTM3IDYgLTM1IDMgMzAgLTI4IDc4IC0zOSAxNDQgLTkxIDEzMiAtMTA0IC01IC00IC0zNyAtOCAtNzEgLTggLTc3IDAgLTExNyAyNCAtMTgyIDEwOSAtNTIgNjggLTUxIDcwIDQyIDg1IDcxIDExIDE0MyAwIDE4MyAtMjkgMTYgLTExIDQwIC00MyA1NCAtNzMgMTMgLTI5IDMyIC01OSA0MSAtNjYgMTQgLTEyIDE2IC03IDE2IDU4IDAgNTkgNCA3NyAyMyAxMDIgMTkgMjYgMjMgNDYgMjUgMTMwIDMgNjcgMCA5OSAtNyA5OSAtNyAwIC0xMSAtMjMgLTEyIC01NyAwIC0zMiAtNiAtNzYgLTEyIC05NyBsLTEyIC00MCAtMjcgMzIgYy0zNCA0MSAtNDMgOTYgLTI0IDE1MSAxNCA0MSA3NSAxNDEgODYgMTQxIDMgMCAyMSAtMjQgNDAgLTUyeiIvPjwvZz48L3N2Zz4K)](https://github.com/max-sixty/tend)

September 2026: Worktrunk was released at the start of the year, and has quickly

become the most popular git worktree manager. It's built with love (there's no slop!). Please let me know any frictions at all; I'm intensely focused

on continuing to make Worktrunk excellent, and the biggest help is folks posting problems they perceive.

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.

A quick demo:

Worktrunk Demo

📚 Full documentation at worktrunk.dev 📚

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 gives 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. Commands that take a branch also accept the path of the worktree it is checked out in.

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)

Expand into the more advanced commands as needed

Workflow automation:

  • Hooks — run commands on create, pre-merge, post-merge, etc - **[LLM commit

messages](https://worktrunk.dev/llm-commits/) — generate commit messages from diffs - Merge workflow** — squash,

rebase, merge, clean up in one command - Interactive picker — browse worktrees with live diff

and log previews - Share build caches — ten worktrees get target/, node_modules/, etc

without building or copying them (on APFS, btrfs, and XFS) - wt list --full — [CI

status](https://worktrunk.dev/list/#ci-status) and AI-generated summaries per branch - **[PR

checkout](https://worktrunk.dev/switch/#pull-requests-and-merge-requests) — wt switch pr:123 to jump straight to a PR's branch - [Dev server per

worktree](https://worktrunk.dev/tips-patterns/#dev-server-per-worktree)** — hash_port template filter gives each worktree a unique port -

Aliases & per-branch variables — custom `wt

` commands and branch-scoped state for hook templates - ...and lots more

Multiple parallel agents, same simple commands:

![Worktrunk omnibus demo: multiple Claude agents in Zellij tabs with hooks, LLM commits, and merge

workflow](https://raw.githubusercontent.com/max-sixty/worktrunk-assets/main/assets/docs/light/wt-zellij-omnibus.gif)

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 & other **Windows.** `wt` defaults to Windows Terminal's command, so 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 → Apps → Advanced app settings → App execution aliases → "Terminal"/"Terminal Preview") to use `wt` directly. > Free code signing provided by [SignPath.io](https://signpath.io/), certificate by [SignPath Foundation](https://signpath.org/) — [policy](https://worktrunk.dev/code-signing/). **Arch Linux:**
sudo pacman -S worktrunk && wt config shell install
**Conda / Pixi** (community-maintained [feedstock](https://github.com/conda-forge/worktrunk-feedstock)):
conda install -c conda-forge worktrunk && wt config shell install
Or with [Pixi](https://pixi.sh): `pixi global install worktrunk && 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:

```console $ wt list Branch Status HEAD± main↕ main…± Remote⇅ Commit Age Message @ feature-auth + ↑ +27 -8 ↑1 +31 4bc72dc 2h Add authenticati… ^ main

^⇡ ⇡1 0e631ad 1d Initial commit

○ Showing 2 worktrees, 1 with changes, 1 ahead, hidden: Path


The `@` marks the current worktree. `+` means staged changes, `↑1` means 1 commit ahead of main, `⇡` means unpushed commits.

When done, either:

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

```bash
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:

```console $ 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](https://worktrunk.dev/hook/#hook-types) to automate setup (install deps, start dev servers).

Next steps

merge](https://worktrunk.dev/merge/), [wt remove`](https://worktrunk.dev/remove/) - Set up hooks for automated setup

Code integration](https://worktrunk.dev/claude-code/), CI status & PR links - Browse [tips &

patterns](https://worktrunk.dev/tips-patterns/) for recipes: aliases, dev servers, databases, agent handoffs, and more - [Extending

Worktrunk](https://worktrunk.dev/extending/) — customize workflows with hooks & aliases - Run wt --help or wt <command> --help for quick CLI

reference

Further reading

including the worktree pattern - [Shipping faster with Claude Code and Git

Worktrees](https://incident.io/blog/shipping-faster-with-claude-code-and-git-worktrees) — incident.io's workflow for parallel agents - [Git worktree

pattern discussion](https://github.com/anthropics/claude-code/issues/1052) — Community discussion in the Claude Code repo - [@DevOpsToolbox's video on

Worktrunk](https://youtu.be/WBQiqr6LevQ?t=345) - git-worktree documentation — Official git reference

Contributing

  • ⭐ Star the repo - Tell a friend about Worktrunk - [Open an

issue](https://github.com/max-sixty/worktrunk/issues/new?title=&body=%23%23%20Description%0A%0A%3C!--%20Describe%20the%20bug%20or%20feature%20request%20--%3E%0A%0A%23%23%20Context%0A%0A%3C!--%20Any%20relevant%20context%3A%20your%20workflow%2C%20what%20you%20were%20trying%20to%20do%2C%20etc.%20--%3E)

— feedback, feature requests, even a small friction or imperfect user message, or [a worktree pain not yet

solved](https://github.com/max-sixty/worktrunk/issues/new?title=Worktree%20friction%3A%20&body=%23%23%20The%20friction%0A%0A%3C!--%20What%20worktree-related%20task%20is%20still%20painful%3F%20--%3E%0A%0A%23%23%20Current%20workaround%0A%0A%3C!--%20How%20do%20you%20handle%20this%20today%3F%20--%3E%0A%0A%23%23%20Ideal%20solution%0A%0A%3C!--%20What%20would%20make%20this%20easier%3F%20--%3E)

  • Share: X ·

Reddit ·

LinkedIn

Running the tests

cargo test

The shell integration tests need bash, zsh, fish, nushell, and pwsh, plus jq:

cargo test --test integration --features shell-integration-tests

📚 Full documentation at worktrunk.dev 📚

Star history

<img

src="https://api.star-history.com/svg?repos=max-sixty/worktrunk&type=Date&sealed_token=2ySbQiVbkVrGmwgDsJya-xr4ApbVVvR0siYI46d22Xj_1kPCcgA9X0YpUGc3__aMuZ0ZAWzG4NBhJtqepYjlkoYrVwmKbgaPmGpNZTCfSyVp8EDA_IXaOOYW2whsOXDAi6g7HD9ezsnqSl58n7AqW2_4IQ4hY2p3h7tNv_3k4am5ASq1NdpbfrOUazCl"

width="500" alt="Star History Chart">