v0.1.0 · 0.6 MiB · rust · gpl-3.0 · telemetry none

your agent writes the code.
wh does the git around it.

a worktree with .env copied in one command, the state of every worktree in one call, a cleanup that only removes what is merged. no model, 0 tokens. when you want words, it reads history and diffs back in plain english, on an anthropic, openai or groq key, or a local model through ollama.

wh/demo/repo
theme autodemologout
repo×wh×+
demo/repo $
anthropic · claude-opus-5 · effort medium
surface
phosphor

worktrees

one branch, one directory.

every branch gets a sibling directory with its .env files copied in, anchored to the main worktree, never to wherever you are standing. branch-switching never touches your working state.

wh.feat-authwh.fix-nav-323wh.hotfix-1.2wh.feat-webwh.docswh.spike-graphwh · main

hover a worktree

  • wh.feat-auth
  • wh.fix-nav-323
  • wh.hotfix-1.2
  • wh.feat-web
  • wh.docs
  • wh.spike-graph

wh new feat/authworktree commands

with agents

the git chores your agent should not spend turns on.

coding agents call wh the way you do. a skill teaches them the non-interactive commands, and a claude code hook makes wh the backend for its own worktrees.

jobwith whagent alone
a worktree for a branchwh new feat/x, .env copieda few shell calls, and remembering .env
every worktree at oncewh ls --json, one callgit status in each one
what a branch changedwh explain --dry-run, lockfiles strippedthe raw diff, lockfile and all
clean up merged workwh rm, merged only, never dirtyworktree remove and branch -D, by judgment
the cost0 tokens, the same output every timetokens, generated each time

cleanup, measured with claude code on opus (median of 5 runs): 5 turns instead of 9, 18s instead of 31s.

wh rm --dry-runwh for agents

specification

small on purpose.

the size is the point. one static binary, git shelled out, the model called through the system curl. the web app is a next.js app you run yourself.

binary0.6 MiB
dependenciesclap, serde, serde_json
runtimenone, shells out to git
targetsmacos arm64 x64 · linux x64 arm64
providersanthropic · openai · groq · ollama
keysenv in the cli, browser in the web
telemetrynone
licensegpl-3.0

plain english

when you want words: history, diffs and pull requests, read back in plain english.

on your own anthropic, openai or groq key (groq has a free tier), or in the terminal on a local model through ollama, free and offline. in the browser it works for any repo you can see on github, and nothing is ever written back. every command, ask, and slash command lives in the docs.

read the docs

needs git, and curl for explain. both ship with macos and virtually every linux. installing builds from source today, so it also needs cargo.