01 · init Set up beside Git.
heddle init writes a .heddle/ sidecar next to .git/. It never rewrites history and never touches your tracked files. Git commits stay in Git; walk away byte-identical whenever you want.
additive · your Git history stays untouched
~/work/api · core loop
$ heddle init
Initialized Heddle data in .heddle for Git-overlay workflows
Side effects:
- created Heddle sidecar for the existing Git repository
- updated .git/info/exclude for Heddle metadata
- left Git-tracked files untouched
created.heddle/ sidecar
git historyuntouched
tracked filesuntouched
02 · status See where you stand.
heddle status is observe-only. It reads your repo and recommends the next step. Nothing is written, nothing uploaded, history untouched.
read-only · safe to run anytime
~/work/api · core loop
$ heddle status
Heddle status
Repository: Git + Heddle
Verification: clean
Thread: main (in sync with Git)
Next: open an isolated thread with heddle start <name>
.heddle/≈.git/
heddle start≈git worktree
heddle land≈git merge
heddle status≈git status
03 · start Branch an isolated thread.
heddle start spins up a copy-on-write, Heddle-managed checkout, one per task or agent. Point a model at it and it never collides with main or another thread.
copy-on-write · no full clone
~/work/api · core loop
$ heddle start feature/auth
Started isolated thread feature/auth
(Heddle-managed checkout, no .git directory)
heddle thread list
* main current
- feature/auth ● isolated checkout
- refactor/db ● isolated checkout
04 · commit Signed, attributed, written through to Git.
Every authored state is a durable checkpoint, signed with ed25519 automatically, no key setup, and named for its author, human or agent. It writes straight through to your .git: a real Git commit, HEAD advances, plain git log shows it. No separate export.
attribution, not archaeology
~/work/api · core loop
$ heddle commit -m
'wire reconnect into sync loop'
Committed hd-5aqcfrwvcs7d as Git commit 711ec9de
Saved by: Luke <luke@heddle.sh>
Agent: anthropic/claude-opus-4-8
Included: crates/grpc_hosted/src/sync.rs
Verification: clean
statehd-5aqcfrwvcs7d
saved byLuke <luke@heddle.sh>
signatureed25519 · verified
05 · annotate The next agent reads it before it edits.
Annotations are versioned objects (constraint, invariant, rationale) attached to a symbol and injected into the agent's context before it edits. Failed attempts become future guardrails.
travels into Claude Code on PreToolUse
~/work/api · core loop
$ heddle context set --kind invariant
--kind invariant --scope symbol:reconnect -m "…"
Annotated …/grpc_hosted/sync.rs (1 active annotation)
stored in .heddle/ · injected on PreToolUse
heddle context get
--- [invariant] hd-zabjx94g3 (active) ---
by: Luke (via anthropic/claude-opus-4-8)
Reconnect must hold the session lock;
racing reconnects corrupt the stream cursor.
06 · land Land semantically.
Heddle merges body-only changes cleanly and surfaces a signature change for review, because a contract change deserves a human. Then it lands back to main.
AST-aware 3-way · falls back to text hunks honestly
~/work/api · core loop
$ heddle land --thread feature/auth
Landing thread feature/auth → main
body-only edits merged · signature change surfaced for review
semantic 3-way merge, AST-aware