Direct copy
Duplicates the data. Both paths are fully independent.
hwt removes the friction from Git worktrees. Turn a branch into a configured Herdr workspace with files copied, dependencies linked, and setup finished. The same result for you and every agent.
The contract
A checkout is only the start. The files it depends on should be present, setup should be finished, and the workspace should be ready for a person or agent to pick up.
Agents shouldn't spend expensive tokens just to re-install dependencies or re-run setup. People shouldn't have to remember to copy files or run scripts. hwt ensures that every worktree is ready for work.
Before and after
Compare the same Elixir and TypeScript repository with Herdr alone or with hwt policy. Run the simulation to see custom placement, naming, and local context arrive.
~/src/acme<path passed to Herdr>~/src/worktrees/acme-billingTracked files arrive. Ignored local context stays behind.
Placed, named, and populated from repository policy.
files.copyDuplicates the data. Both paths are fully independent.
Shares unchanged disk blocks. A changed block becomes independent.
Creates only a pointer. Reads and writes use the original path.
* Herdr can react to worktree.created with a plugin event hook. That requires authoring or installing a plugin and configuring its command; Herdr plugins are enabled globally for the current user rather than per repository. hwt keeps post_create alongside the repository's other worktree policy.
Apply branch naming and checkout placement, then transfer files and finish setup before handing back the workspace.
hwt create -b feat/fast-pathMachine-readable output returns workspace, pane, checkout, branch, and copied-file details without screen scraping.
hwt create -b fix/race --jsonCopy normally, clone on APFS, or symlink heavyweight dependencies. Choose once globally and override per repository.
copy_on_write: trueHerdr plugin
experimentalOpen a polished branch prompt from your Herdr keybindings. Name the worktree, fuzzy-find its base branch, and let hwt apply the repository's complete ready-state policy.
Explore the Herdr plugin →Repository policy
Commit one small YAML file. hwt resolves it with your global defaults, validates every path, and performs the work in a predictable order.
Explore configuration →# .herdr-worktree.yaml
worktree_naming: basename
files:
copy:
- .env.localInstall hwt with mise and create your first configured Herdr worktree.
mise use -g github:dkarter/hwt