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 install

wt config shell install is not optional — without the shell integration wt cannot change your directory, which is most of the point.

Core commands

CommandDoes
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:123jump straight to a PR/MR’s branch
wt listall worktrees with dirty/ahead/behind/push status
wt merge maincommit, squash, rebase, fast-forward merge, then remove the worktree
wt removeremove 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
GlyphMeaning
@current worktree
^the trunk branch
+staged changes
↑11 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.