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
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: trueRepository 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
agent: opencode --port
worktree_dir: ../
worktree_naming: full
files:
copy:
- .env.local
- path: node_modules
symlink: true
post_create:
- mise installInstall hwt with mise and create your first configured Herdr worktree.
mise use -g github:dkarter/hwt