max-sixty / worktrunk
git clone https://github.com/max-sixty/worktrunk.git
v0.80.0 Β· 23d ago
π₯ on GitHub Trending today
Worktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows
+23
stars, 24h Β· #303
β
stars, 7 days
β
stars, 30 days
9.3k
β
total
333
forks Β· 71 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
Licenseβ
Created2025-10-17 (1y ago)
Last pushtoday
Watchers19
OwnerUser
Seen on GitHub Trending
- 2026-10-20 β #12 daily in rust Β· +23 β
GitHub topics
Links
- GitHub: github.com/max-sixty/worktrunk
- Homepage: https://worktrunk.dev
- Releases Β· Issues Β· Hacker News mentions
README excerpt
Worktrunk > **October 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 & copy-on-write build caches. A quick 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** β generate commit messages from diffs - **Merge workflow** β squash, rebase, merge, clean up in one command - **Interactive picker** β browse worktrees with streaming CI status and diff, log, PR and comment 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 and AI-generated summaries per branch - **PR checkout** β `wt switch pr:123` to jump straight to a PR's branch - **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: ## Install **Homebrew (macOS & Linux):** [code] Shell integration allows commands to change directories. **Cargo:** [code] Windows & other **Windows.** `wt` defaults to Windows Terminal's co