🧭 Decision Guide
Why trending now: The README presents Worktrunk as a Git-worktree CLI for parallel AI agents, with Claude Code, Codex, Hooks, LLM commit messages, and wt merge workflows. Combined with 54 new stars on 2026-09-13, 7,236 total stars, and version 0.77.0, the material supports growing interest in parallel AI-coding workflows, but cannot confirm the exact reason for trending.
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?
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 testas 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
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?
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, andfeature-c, giving each agent an isolated directory so uncommitted files and build outputs do not directly overwrite one another. wt listaggregates the current worktree, modification status, commits ahead ofmain, and remote push status, making agent progress visible.- When work is complete, you can use the PR workflow or
wt merge mainfor 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'
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?
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 asgit-wtto avoid the collision. - The documented installation is
winget install max-sixty.worktrunk, followed bygit-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
wtdirectly, but the README presents that as an alternative rather than the default path. - After installation, you can still launch Claude with
-xand inspect worktrees withgit-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
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?
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 listreporting workspace changes, commits ahead ofmain, 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 bywt remove; Worktrunk does not replace the PR review process. wt switch pr:123can 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
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?
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_porttemplate 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
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?
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-ignoredworkflow. 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
✨ 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