Worktrees without the ceremony.

TL;DR: wt creates a worktree for each task, moves you into it, and merges or ships it back to trunk when you are done.

$ wt create blue-button
$EDITOR .
$ wt ship 
rebased blue-button onto main
merged blue-button into main
removed blue-button
pushed main

Latest release: 0.4

brew install mikker/tap/wt

Enable directory switching in zsh:

echo 'eval "$(wt shellenv zsh)"' >> ~/.zshrc
exec zsh

For Bash, add eval "$(wt shellenv bash)" to ~/.bashrc instead.

The shell integration also completes commands and current worktree names for wt switch, wt s, and wt rm.

Then create a worktree from any Git repository:

wt create my-change

Worktrees live inside the main checkout at .wt/worktrees/<name> by default. They are ephemeral: wt done merges locally and removes the worktree; wt ship also syncs and pushes.

Using Fut? wt works well with Fut, the persistent, agent-aware terminal multiplexer. wt creates and manages the Git worktrees; Fut recognizes linked worktrees as peer workspaces in the same project session, keeping each task’s terminals and agents together.

Start here