Frictionless Herdr worktrees

Your next workspace,
already working.

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.

Worktrees should start with context, not chores.

Herdr creates the checkout.
hwt makes it ready.

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.

Compare the checkoutWhat reaches the new worktree?
hwt create -b feature/billing
BeforeOriginal checkout~/src/acme
  • .git
  • .env.localignored
  • .herdr-worktree.yaml
  • backend
    • config
      • dev.secret.exsignored
    • depsignored
    • lib
    • mix.exs
  • frontend
    • node_modulesignored
    • package.json
    • src
AfterCreated with hwt<path passed to Herdr>~/src/worktrees/acme-billing
Run the command to build this checkout.
  • .git
  • .env.localcopied
  • .herdr-worktree.yaml
  • backend
    • config
      • dev.secret.exscopied
    • depscloned
    • lib
    • mix.exs
  • frontend
    • package.json
    • src

Tracked files arrive. Ignored local context stays behind.

Placed, named, and populated from repository policy.

Three ways to transfer context

files.copy

Direct copy

Duplicates the data. Both paths are fully independent.

Copy on write

Shares unchanged disk blocks. A changed block becomes independent.

* 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.

01

One command, every rule.

Apply branch naming and checkout placement, then transfer files and finish setup before handing back the workspace.

hwt create -b feat/fast-path
02

Built for agents.

Machine-readable output returns workspace, pane, checkout, branch, and copied-file details without screen scraping.

hwt create -b fix/race --json
03

Fast by policy.

Copy normally, clone on APFS, or symlink heavyweight dependencies. Choose once globally and override per repository.

copy_on_write: true

Describe the ready state.

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 install

Branch. Build. Leave the setup behind.

Install hwt with mise and create your first configured Herdr worktree.

mise use -g github:dkarter/hwt