p:: Git, CLI f:: Claude Code, lazygit
Rust CLI that makes Git worktrees as cheap to use as branches, built for running several coding agents in parallel. Worktrees are addressed by branch name — the path comes from a configurable template — so wt switch feat replaces cd ../repo.feat. The binary is wt.
Install
brew install worktrunk && wt config shell installwt config shell install is not optional — without the shell integration wt cannot change your directory, which is most of the point.
Core commands
| Command | Does |
|---|---|
wt switch <branch> | cd to that branch’s worktree |
wt switch -c <branch> | create branch + worktree from main, then switch |
wt switch -x <cmd> <branch> | switch, then run <cmd> there |
wt switch pr:123 | jump straight to a PR/MR’s branch |
wt list | all worktrees with dirty/ahead/behind/push status |
wt merge main | commit, squash, rebase, fast-forward merge, then remove the worktree |
wt remove | remove current worktree and delete its branch |
Reading 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| Glyph | Meaning |
|---|---|
@ | current worktree |
^ | the trunk branch |
+ | staged changes |
↑1 | 1 commit ahead of main |
⇡ | unpushed commits |
wt list --full adds CI status and LLM-generated per-branch summaries — a network call per branch, so it is not the default.