Worktrunk: Manage parallel Git worktrees for Claude Code
Worktrunk manages Git worktrees for developers running Claude Code in parallel, replacing cumbersome path-based commands with wt.
GitHub max-sixty/worktrunk Updated 2026-09-13 Branch main Stars 7.2K Forks 256
Rust Git worktree AI agents CLI macOS/Linux/Windows

🧭 Decision Guide

Try it if you

  • You want Claude Code or Codex to handle 5-10+ tasks at the same time.
    The README's “Context: git worktrees” says AI agents can manage 5-10+ tasks in parallel and names Claude Code and Codex.
  • You want wt merge to perform squash, rebase, merge, and cleanup in one command.
    The README's “Merge workflow” and “Quick start” show the local merge and worktree cleanup flow using wt merge main.
  • You need to install dependencies or start a dev server automatically for each worktree.
    The README's “Hooks” section says commands can run at create, pre-merge, and post-merge stages; the post-start hooks example mentions installing dependencies and starting servers.
  • Your project has large build directories across multiple worktrees on APFS, btrfs, or XFS.
    The README's “Share build caches” section says ten worktrees can share target/, node_modules/, and similar caches without building or copying them.

Skip it if you

  • You only need one worktree and do not use Claude Code, Codex, or parallel agents.
    The README defines the core use case as “running AI agents in parallel” and explains the value through 5-10+ agents.
  • Your team cannot accept that the specific license is still listed as Other.
    The project metadata lists the license as Other, and the supplied material gives no specific license name.
  • You rely on Windows Terminal's wt alias and do not want to use git-wt.
    The README's “Install” section says Winget installs git-wt on Windows to avoid a Windows Terminal command conflict.

Requirements

  • The project is based on Git worktree; the README's “Context: git worktrees” describes Git's native worktree feature.
  • On macOS or Linux, the README provides `brew install worktrunk && wt config shell install`.
  • The Cargo installation path is `cargo install worktrunk && wt config shell install`.
  • On Windows, the README provides `winget install max-sixty.worktrunk`, followed by `git-wt config shell install`.
  • Shell integration tests require bash, zsh, fish, nushell, pwsh, and jq.
  • The shared build-cache section explicitly lists APFS, btrfs, and XFS.

First step (verbatim from README)

brew install worktrunk && wt config shell install

Watch out

  • On Windows, you may need to use git-wt instead of wt.
    The README's “Windows” installation section says the Windows Terminal command conflict leads Winget to install git-wt.
  • Shell integration changes directories, so you need to run wt config shell install after installation.
    The README's “Install” section says Shell integration allows commands to change directories and includes this command after Homebrew and Cargo installation.
  • Separate agent directories do not automatically mean separate ports; hash_port must be configured.
    The README's “Dev server per worktree” section says the hash_port template filter provides a unique port for each worktree.
  • Shell integration tests require more than the default shell and also require jq.
    The README's “Running the tests” section explicitly lists bash, zsh, fish, nushell, pwsh, and jq.

Alternatives

  • Native Git worktree:It is more direct when you only need `git worktree add`, directory switching, and `git worktree remove`, without wt Hooks, AI summaries, or the merge workflow.
    README sections “Context: git worktrees” and “Worktrunk makes git worktrees as easy as branches”
  • Claude Code native worktree workflow:It is simpler for teams using only Claude Code's documented workflow and not needing wt list, wt merge, or multi-shell integration.
    README sections “Further reading” and “Claude Code integration”

Not stated in the README

  • The supplied README material does not state the specific license name or its commercial-use terms.
  • The supplied README material does not state supported Git, Rust, Node.js, or operating-system versions.
  • The supplied README material does not quantify performance or disk savings versus native Git commands.
  • The supplied README material does not specify which models or credentials are required for LLM commit messages.
  • The supplied README material does not specify which CI services are supported for CI status.
  • The supplied README material does not explain maintainer responsibilities or response times beyond the 10 listed contributors.
  • The supplied README material does not provide comparison data against other Git worktree managers.
  • The supplied README material does not describe rollback behavior when Hooks fail.

💡 Deep Analysis

6
Yes I maintain this Rust CLI and need to validate shell integration across bash, zsh, fish, nushell, and pwsh, with `jq` available. Does the README provide a directly executable test entry point?
For: A contributor maintaining the Rust CLI who needs shell-integration tests across bash, zsh, fish, nushell, and pwsh

Yes. The README gives direct Rust and shell-integration test commands and explicitly lists the required shells and jq.

  • The project is primarily implemented in Rust; the project data reports 9,847,106 lines of Rust, and the README provides cargo test as the basic test entry point.
  • The shell-integration command is cargo test --test integration --features shell-integration-tests, so you do not need to construct feature arguments yourself.
  • The README explicitly requires bash, zsh, fish, nushell, pwsh, and jq, which matches your environment constraint exactly.
  • These tests validate the project test suite and shell behavior. They do not imply that every project-specific hook, port template, or custom alias will pass automatically; those belong to the consumer’s workflow.

For a contributor, this is a clear starting point. If a CI machine lacks one shell or jq, the README does not provide an installation matrix.

  • Running the tests: `cargo test`
  • Running the tests: `cargo test --test integration --features shell-integration-tests`
  • Quoted README text: The shell integration tests need bash, zsh, fish, nushell, and pwsh, plus `jq`
  • Project data: main_language is Rust; Rust code count is 9,847,106
cargo test --test integration --features shell-integration-tests
Not stated in the README:The README does not specify minimum versions for each shell or the operating-system combinations required to run the tests.;The README does not say whether CI automatically installs `jq` and all listed shells.;The README does not state how much project-specific hooks, aliases, and templates are covered by the test suite.
Yes I need to launch 3 Claude Code tasks for authentication, a pagination bug, and API tests without allowing uncommitted changes to overwrite one another. Is Worktrunk suitable?
For: An individual developer running Claude Code agents on 3 independent tasks in parallel

Yes, because it combines Git worktree isolation with Claude startup in the same workflow.

  • wt switch -x claude -c feature-a -- 'Add user authentication' creates a separate branch and worktree, then launches Claude; the README states that arguments after -- are passed to the agent.
  • The three tasks can use feature-a, feature-b, and feature-c, giving each agent an isolated directory so uncommitted files and build outputs do not directly overwrite one another.
  • wt list aggregates the current worktree, modification status, commits ahead of main, and remote push status, making agent progress visible.
  • When work is complete, you can use the PR workflow or wt merge main for commit, rebase, merge, and cleanup.

Directory isolation does not guarantee logical independence. If the tasks modify the same interface, merge conflicts still require manual resolution.

  • Quick start: `wt switch -x claude -c feature-a -- 'Add user authentication'`
  • Quick start: the `-x` flag runs a command after switching; arguments after `--` are passed to it
  • Quick start: `wt list` shows worktree status, ahead/behind information, and remote status
  • Workflow automation: Merge workflow — squash, rebase, merge, clean up in one command
wt switch -x claude -c feature-a -- 'Add user authentication'
Not stated in the README:The README does not specify CPU, memory, or API quota requirements for running 3 Claude processes simultaneously.;The README does not describe extra conflict detection or coordination when agents edit the same files.
Yes I use Windows Terminal on Windows and want to create and switch Git worktrees with Claude Code. Since `wt` is already used by the terminal command, should I install Worktrunk?
For: A Windows developer using Windows Terminal and managing Claude Code worktrees

Yes, but you should use the git-wt entry point documented for the Windows Terminal conflict rather than assuming wt is available.

  • The README explicitly says Windows Terminal already uses wt, so Winget installs Worktrunk as git-wt to avoid the collision.
  • The documented installation is winget install max-sixty.worktrunk, followed by git-wt config shell install; the integration is what allows switching commands to change the current directory.
  • You can disable the Windows Terminal application execution alias and use wt directly, but the README presents that as an alternative rather than the default path.
  • After installation, you can still launch Claude with -x and inspect worktrees with git-wt list; the core remains based on Git worktrees.

Windows Terminal is therefore not a blocker. The practical decision is whether your workflow accepts the git-wt command and its shell-integration behavior.

  • Install: on Windows, `wt` defaults to Windows Terminal's command
  • Quoted README text: Winget additionally installs Worktrunk as `git-wt` to avoid the conflict
  • Windows installation command: `winget install max-sixty.worktrunk`
  • Windows installation section: `git-wt config shell install`
winget install max-sixty.worktrunk
Not stated in the README:The README does not provide a complete compatibility matrix for specific Windows shells such as PowerShell or pwsh.;The README does not describe conflicts between `git-wt`, existing Git aliases, enterprise device policies, or restricted Winget environments.
Yes We merge multiple feature branches through GitHub PRs and want one list showing uncommitted changes, unpushed commits, and CI status. Can Worktrunk replace manually checking each worktree?
For: An engineering team member using a GitHub PR workflow while maintaining multiple feature branches and CI status

Yes, because wt list --full is designed to aggregate multi-worktree status, although it does not replace GitHub review or merge permissions.

  • The Quick start example shows wt list reporting workspace changes, commits ahead of main, remote push status, commit information, and age, covering the local branch overview you described.
  • The README additionally lists CI status and AI-generated summaries per branch under wt list --full, providing a more complete view.
  • The PR workflow uses gh pr create, then merges through GitHub or GitLab, followed by wt remove; Worktrunk does not replace the PR review process.
  • wt switch pr:123 can jump directly to the branch associated with a PR, reducing path-based lookup work.

It is therefore a good fit for reducing status inspection and cleanup, while complex review rules, permissions, and CI remediation remain responsibilities of GitHub and the existing engineering workflow.

  • Quick start: `wt list` shows Status, HEAD±, main↕, Remote⇅, Commit, and Age
  • Expand into the more advanced commands: `wt list --full` — CI status and AI-generated summaries per branch
  • PR workflow: `gh pr create` and `wt remove`
  • Quoted README text: `wt switch pr:123` to jump straight to a PR's branch
wt list --full
Not stated in the README:The README does not specify which CI platforms, authentication methods, or failure-refresh intervals are supported.;The README does not define compatibility with private GitHub/GitLab instances, proxy networks, or fine-grained permissions.
It depends I need each worktree to use a separate development-server port and want dependency installation and server startup to happen automatically after creation. Can Worktrunk cover this shell-hook workflow?
For: An advanced CLI developer who needs one development server per worktree and uses shell hooks to automate dependency setup

It depends, because Worktrunk provides port templates and creation hooks, but the README does not package dependency, database, and server lifecycle management as a complete default solution.

  • The advanced-features list explicitly provides Dev server per worktree and says the hash_port template filter gives each worktree a unique port.
  • Hooks can run commands on create, pre-merge, and post-merge, and the Quick start specifically says post-start hooks can install dependencies and start development servers.
  • Path templates, aliases, and per-branch variables can pass branch-scoped state into hook templates, which is useful for ports, service names, and local parameters.
  • However, directory isolation is not the same as database, container, or external-service isolation. The README documents automation entry points, not safe parallel execution for every runtime.

Unique development-server ports are directly supported. Full environment automation depends on your shell commands, dependency manager, and runtime resources.

  • Expand into the more advanced commands: Dev server per worktree
  • Quoted README text: `hash_port` template filter gives each worktree a unique port
  • Workflow automation: Hooks — run commands on create, pre-merge, post-merge, etc
  • Quick start: Configure post-start hooks to automate setup (install deps, start dev servers)
wt config shell install
Not stated in the README:The README does not provide the `hash_port` syntax, port range, or collision-handling behavior.;The README does not specify hook exit-code or rollback behavior when commands fail, worktrees are recreated, or cleanup runs.;The README does not document built-in isolation for databases, containers, or external services.
It depends I maintain 10 worktrees on macOS APFS and want to reuse Rust `target/` and Node.js `node_modules/` to reduce repeated builds and installs. Can Worktrunk meet this requirement?
For: A macOS developer maintaining 10 worktrees and wanting to reuse `target/` and `node_modules/` in a Rust/Node.js project

It depends, because the README explicitly supports this cache-sharing scenario but only for specified filesystems and ignored directories.

  • The advanced-features list says Share build caches can provide target/, node_modules/, and similar directories to ten worktrees without rebuilding or copying them repeatedly.
  • APFS is explicitly included in the supported filesystem list, so macOS APFS is directly covered by the documentation rather than being an untested assumption.
  • This capability is associated with the wt step copy-ignored workflow. It is not a guarantee that every build system can safely share caches; cache contents, lockfiles, and toolchain compatibility still matter.
  • Hooks can automate dependency setup when a worktree is created, but the README does not promise automatic configuration for a particular Rust and Node.js project.

It is a good fit for reducing repeated setup, but the README does not establish that shared directories remain safe when branches require incompatible dependencies.

  • Expand into the more advanced commands as needed: Share build caches
  • Quoted README text: ten worktrees get `target/`, `node_modules/`, etc without building or copying them
  • Quoted README text: on APFS, btrfs, and XFS
  • Workflow automation: Hooks — run commands on create, pre-merge, post-merge, etc
brew install worktrunk && wt config shell install
Not stated in the README:The README does not specify invalidation or cleanup rules when Rust target caches or Node.js node_modules change across branches.;The README does not define compatibility boundaries for `wt step copy-ignored` with specific build tools, package managers, or symlinks.

✨ Highlights

  • Supports 5-10+ parallel AI-agent worktrees
  • wt merge handles merging and cleanup in one command
  • Hooks can automate dependency setup and server startup
  • Build caches can be shared on APFS, btrfs, and XFS
  • The project has 10 contributors and 5 releases

🔧 Engineering

  • wt switch, list, and merge manage the core worktree workflow
  • wt list --full shows CI status and AI-generated summaries
  • wt switch pr:123 jumps directly to a PR branch
  • The hash_port template gives each worktree a unique port

⚠️ Risks

  • The license metadata is Other, with no specific license stated
  • The Windows Terminal alias makes the command use git-wt
  • Shell integration tests require five shells and jq
  • The README calls it the most popular, but gives no external comparison data

👥 For who?

  • Developers running Claude Code or Codex in parallel
  • Teams managing 5-10+ Git worktrees
  • Projects using Rust, Node.js, or per-worktree dev servers
  • Developers needing Hooks for automated setup and server startup