{"slug": "worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows", "title": "Worktrunk: A CLI for Git worktree management, designed for AI agent workflows", "summary": "Worktrunk, a new command-line tool for Git worktree management, launched with three core commands — `wt switch`, `wt remove`, and `wt list` — designed to let developers run 5-10+ parallel AI coding agents such as Claude Code and Codex without their changes conflicting. The tool addresses Git's native worktree UX, which requires typing a branch name three times to create and enter a worktree, by addressing worktrees by branch name and computing paths from a configurable template. Worktrunk adds hooks, LLM-generated commit messages, copy-on-write build cache sharing on APFS, btrfs and XFS, and per-worktree dev server ports, and is installable via Homebrew, Cargo, Winget, Arch Linux, and Conda/Pixi.", "body_md": "# Worktrunk\n\nWorktrunk is a CLI for Git worktree management, designed for **parallel AI agent\nworkflows**.\n\nWorktrunk’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 & copy-on-write build caches.\n\nA quick demo:\n\n## Context: git worktrees\n\n[Section titled “Context: git worktrees”](#context-git-worktrees)\n\nAI 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.\n\nBut the git worktree UX is clunky. Even a task as small as starting a new\nworktree requires typing the branch name three times: `git worktree add -b feat ../repo.feat`, then `cd ../repo.feat`.\n\n## Worktrunk makes git worktrees as easy as branches\n\n[Section titled “Worktrunk makes git worktrees as easy as branches”](#worktrunk-makes-git-worktrees-as-easy-as-branches)\n\nWorktrees 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.\n\nStart with the core commands\n\n**Core commands:**\n\n| Task | Worktrunk | Plain git | \n|---|---|---|\n| Switch worktrees | `wt switch feat` | `cd ../repo.feat` | \n| Create + start Claude | `wt switch -c -x claude feat` | \n\n```\ngit worktree add -b feat ../repo.feat && \\\ncd ../repo.feat && \\\nclaude\n```\n\n | \n| Clean up | `wt remove` | \n\n```\ncd ../repo && \\\ngit worktree remove ../repo.feat && \\\ngit branch -d feat\n```\n\n | \n| List with status | `wt list` | `git worktree list` (paths only) | \n\nExpand into the more advanced commands as needed\n\n**Workflow automation:**\n\n- **[Hooks](https://worktrunk.dev/hook/)** — run commands on create, pre-merge, post-merge, etc\n- **[LLM commit messages](https://worktrunk.dev/llm-commits/)** — generate commit messages from diffs\n- **[Merge workflow](https://worktrunk.dev/merge/)** — squash, rebase, merge, clean up in one command\n- **[Interactive picker](https://worktrunk.dev/switch/#interactive-picker)** — browse worktrees with streaming CI status and diff, log, PR and comment previews\n- **[Share build caches](https://worktrunk.dev/step/#wt-step-copy-ignored)** — ten worktrees get`target/` ,`node_modules/` , etc without building or copying them (on APFS, btrfs, and XFS)\n- **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** —[CI status](https://worktrunk.dev/list/#ci-status) and[AI-generated summaries](https://worktrunk.dev/list/#llm-summaries) per branch\n- **[PR checkout](https://worktrunk.dev/switch/#pull-requests-and-merge-requests)** —`wt switch pr:123` to jump straight to a PR’s branch\n- **[Dev server per worktree](https://worktrunk.dev/tips-patterns/#dev-server-per-worktree)** —`hash_port` template filter gives each worktree a unique port\n- **[Aliases](https://worktrunk.dev/extending/#aliases) & [per-branch variables](https://worktrunk.dev/config/#wt-config-state-vars)** — custom`wt <name>` commands and branch-scoped state for hook templates\n- …and **[lots more](#next-steps)**\n\nMultiple parallel agents, same simple commands:\n\n## Install\n\n[Section titled “Install”](#install)\n\n**Homebrew (macOS & Linux):**\n\nShell integration allows commands to change directories.\n\n**Cargo:**\n\n## **Windows & other**\n\n**Windows.** `wt` defaults to Windows Terminal’s command, so Winget additionally installs Worktrunk as `git-wt` to avoid the conflict:\n\nAlternatively, disable Windows Terminal’s alias (Settings → Apps → Advanced app settings → App execution aliases → “Terminal”/“Terminal Preview”) to use `wt` directly.\n\nFree code signing provided by [SignPath.io](https://signpath.io/), certificate by [SignPath Foundation](https://signpath.org/) — [policy](https://worktrunk.dev/code-signing/).\n\n**Arch Linux:**\n\n**Conda / Pixi** (community-maintained [feedstock](https://github.com/conda-forge/worktrunk-feedstock)):\n\nOr with [Pixi](https://pixi.sh): `pixi global install worktrunk && wt config shell install`.\n\n## Quick start\n\n[Section titled “Quick start”](#quick-start)\n\nCreate a worktree for a new feature:\n\nThis creates a new branch and worktree, then switches to it. Do your work, then check all worktrees with [`wt list`](https://worktrunk.dev/list/):\n\nThe `@` marks the current worktree. `+` means staged changes, `↑1` means 1 commit ahead of main, `⇡` means unpushed commits.\n\nWhen done, either:\n\n**PR workflow** — commit, push, open a PR, merge via GitHub/GitLab, then clean up:\n\n**Local merge** — squash, rebase onto main, fast-forward merge, clean up:\n\nFor parallel agents, create multiple worktrees and launch an agent in each:\n\nThe `-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).\n\n## Next steps\n\n[Section titled “Next steps”](#next-steps)\n\n- Learn the core commands: [`wt switch`](https://worktrunk.dev/switch/) ,[` wt list`](https://worktrunk.dev/list/) ,[` wt merge`](https://worktrunk.dev/merge/) ,[` wt remove`](https://worktrunk.dev/remove/)\n- Set up [hooks](https://worktrunk.dev/hook/) for automated setup\n- Explore [LLM commit messages](https://worktrunk.dev/llm-commits/) ,[interactive\npicker](https://worktrunk.dev/switch/#interactive-picker) ,[Claude Code integration](https://worktrunk.dev/claude-code/) ,[CI\nstatus & PR links](https://worktrunk.dev/list/#ci-status)\n- Browse [tips & patterns](https://worktrunk.dev/tips-patterns/) for recipes: aliases, dev servers, databases, agent handoffs, and more\n- [Extending Worktrunk](https://worktrunk.dev/extending/) — customize workflows with hooks & aliases\n- Watch [@DevOpsToolbox’s video on Worktrunk](https://youtu.be/WBQiqr6LevQ?t=345)\n- Run `wt --help` or`wt <command> --help` for quick CLI reference", "url": "https://wpnews.pro/news/worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows", "canonical_source": "https://worktrunk.dev/", "published_at": "2026-10-01 17:55:37+00:00", "updated_at": "2026-10-01 18:17:41.064378+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["Worktrunk", "Git", "Claude Code", "Codex", "Homebrew", "Cargo", "Winget", "SignPath.io"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows", "markdown": "https://wpnews.pro/news/worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows.md", "text": "https://wpnews.pro/news/worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows.txt", "jsonld": "https://wpnews.pro/news/worktrunk-a-cli-for-git-worktree-management-designed-for-ai-agent-workflows.jsonld"}}