Sandbox
@max-sixty/worktrunk

Git worktree CLI for Claude Code and Codex

Worktrunk makes git worktrees easier to use when you are running several AI agents at once. It gives you a single `wt` command for switching, creating, listing, merging, and removing worktrees, plus hooks and helpers for common workflows like commits and per-worktree setup.

6,933 stars245 forksRustUpdated 7d ago
Stop Using Git Worktrees. Do THIS Instead.
DevOps Toolbox64k views • 6 months ago
Who it's for

Builders who run Claude Code or Codex across many worktrees and want one place to manage them.

What it delivers

You can spin up parallel agent tasks, keep each one in its own worktree, and clean them up without juggling raw git commands.

What it does

Create and switch worktrees

`wt switch` can create a branch and worktree in one step, then move you into it.

List worktrees with status

`wt list` shows branch state, ahead/behind info, and other worktree details.

Merge and clean up

`wt merge` can squash, rebase, or fast-forward changes back to the target branch, then remove the worktree.

Run commands after switching

The `-x` flag runs an agent or shell command after the worktree switch, which is useful for starting Claude or other tools.

Hook-based automation

Hooks can run on create, pre-merge, post-merge, and other lifecycle events to install deps or start services.

Agent-specific integrations

The repo includes Claude Code, Codex, and plugin/skill files that help tie Worktrunk into agent workflows.

How to get it

  1. 1Homebrew (macOS & Linux)
    brew install worktrunk && wt config shell install
  2. 2Cargo
    cargo install worktrunk && wt config shell install
  3. 3Windows. wt defaults to Windows Terminal's command, so Winget additionally installs…
    winget install max-sixty.worktrunk
    git-wt config shell install
  4. 4Arch Linux
    sudo pacman -S worktrunk && wt config shell install
  5. 5Conda / Pixi (community-maintained feedstock)
    conda install -c conda-forge worktrunk && wt config shell install
  6. 6Create a worktree for a new feature
    $ wt switch --create feature-auth
    ✓ Created branch feature-auth from main and worktree @ ~/repo.feature-auth

README

Worktrunk logo  Worktrunk

Docs License: MIT OR Apache-2.0 CI Codecov Stars maintained with 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 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. Commands that take a branch also accept the path of the worktree it is checked out in.

Start with the core commands

Core commands:

TaskWorktrunkPlain git
Switch worktreeswt switch featcd ../repo.feat
Create + start Claudewt switch -c -x claude feat
git worktree add -b feat ../repo.feat && \
cd ../repo.feat && \
claude
Clean upwt remove
cd ../repo && \
git worktree remove ../repo.feat && \
git branch -d feat
List with statuswt listgit worktree list (paths only)

Expand into the more advanced commands as needed

Workflow automation:

Multiple parallel agents, same simple commands:

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

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, certificate by SignPath Foundationpolicy.

Arch Linux:

sudo pacman -S worktrunk && wt config shell install

Conda / Pixi (community-maintained feedstock):

conda install -c conda-forge worktrunk && wt config shell install

Or with Pixi: 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:

$ 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:

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

Contributing

📚 Full documentation at worktrunk.dev 📚

Star history

Star History Chart

Files in the repo

Repository payload36 top-level entries
  • .agents
  • .cargo
  • .claude
  • .claude-plugin
  • .codex
  • .config
  • .github
  • benches
  • dev
  • docs
  • hooks
  • nix
  • plugins
  • skills
  • src
  • templates
  • tests
  • .gitattributes
  • .gitignore
  • .pre-commit-config.yaml
  • .typos.toml
  • .worktreeinclude
  • AGENTS.md
  • build.rs
  • Cargo.lock
  • Cargo.toml
  • CHANGELOG.md
  • CLAUDE.md
  • dist-workspace.toml
  • flake.lock
  • flake.nix
  • gemini-extension.json
  • LICENSE
  • README.md
  • rust-toolchain.toml
  • Taskfile.yaml

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k