Task threads
Many agents. One repo. No silent rewrites.
A thread is a named pointer into the DAG. Opening one creates an isolated worktree, sharing the main repository's object store. Many threads, zero extra disk. No coordination, no merge dance before the work is ready.
Threads track lineage structurally. A rebase, a collapse, or a merge produces a new state without overwriting the original — so another agent that forked earlier on the same thread keeps its view intact.
Most threads stay lightweight: a named pointer plus a lazy worktree
that materializes only the files an agent reads. When a thread needs
the full filesystem to operate freely — running tests, dropping
scratch files, building artifacts — promote it to a heavy worktree
with heddle thread promote. You only pay disk for the
threads that actually need it.
bash$ heddle start task/biscuit-authz --task "require minting keypair at boot"thread started · worktree: .heddle/threads/biscuit-authz$ heddle start task/biscuit-callersthread started · worktree: .heddle/threads/biscuit-callers# threads keep intent — every fork stays addressable as the work moves.