Agents

Every agent gets its own thread. No collisions, no lost context.

Two agents on the same repo collide. Retries duplicate work. Handoffs lose context. The shared record is whatever survives in chat. Heddle gives each agent its own task-thread, and the team one operating record across them. Cursor, Claude Code, Codex converge on one Heddle repo.

heddle agent list · heddle/core-services

4 active · 1 ready
Agent Thread Status States Elapsed
  • mochi claude-opus-4.7
    task/biscuit-authz writing tests for scope denial
    running
    7
    11m 04s
  • nori claude-sonnet-4.6
    chore/structured-logging refactoring log handler
    running
    4
    08m 22s
  • ume claude-opus-4.7
    fix/migration-0042 awaiting signature
    ready
    12
    24m 58s
  • haku claude-haiku-4.5
    docs/agents-api-reference waiting for review feedback
    idle
    2
    02m 17s
Illustrative snapshot. Live telemetry with the hosted preview.
02 Task threads

Run many task-threads.
One repository.

Each task is its own named thread: isolated by default, addressable, recoverable. Merge creates a new state. The whole record holds: every capture, every retry, every fork.

feature/auth/middleware

claude · opus 4.7

  1. pkka73 scaffold session middleware
  2. hxe72g verify access-token grants
  3. 5xtkhq rate-limit per session
  4. 2qpsr7 extract token store

4 states

feature/auth/tests

gpt · 5.4

  1. zepss6 cover login happy path
  2. 3jmtnk test expired tokens
  3. 9fbcqm fuzz the rate limiter

3 states

feature/auth/docs

grok · 4.20

  1. x9r2qm draft auth API reference
  2. vknq84 add migration notes

2 states

MERGE feature/auth 9 commits · 3 agents · one resolved state
claudefeature/auth/middleware · 4gptfeature/auth/tests · 3grokfeature/auth/docs · 2mainhd-pkka73p5zbe3b · claudepkka73hd-hxe72g89a4mq2 · claudehxe72ghd-zepss63kb2s5n · gptzepss6hd-x9r2qmf3a8wp · grokx9r2qmhd-vknq84llr2cm · grokvknq84hd-5xtkhq8wp3nv · claude5xtkhqhd-3jmtnkkkr9t8 · gpt3jmtnkhd-9fbcqmt2pxh4 · gpt9fbcqmhd-2qpsr7vn5cks · claude2qpsr7hd-d01a8b4e

Isolated worktrees

One repo. Many agents. No lock contention.

Each worktree is a lightweight pointer into the shared object store. Any agent gets an independent working directory backed by the full history. Isolation is structural: not coordinated, not negotiated.

heddle start task/biscuit-authz --agent-provider anthropic --agent-model claude-opus-4.7

Multi-agent coordination

Parallel threads. Merged with attribution intact.

Each agent works on its own worktree with independent state. Snapshot isolation is structural: the worktree holds its own view, the shared object store keeps the record consistent.

Merge when the work is ready. Attribution from every agent is preserved through the merge. You always know who contributed which state.

Walk back from the merge tip and every commit still has its name.

Attribution

Every action carries its author.

The agent registry records ID, provider, model, and status at spawn time. That metadata is structural, threaded into the object model from the first write. When work is merged, attribution from every agent is preserved.

You always know what each agent did, under which model, with what authorization. The record survives the merge.

task task/biscuit-authz
state hd-0t4vb369z687
actor claude-opus-4.7
provider anthropic
delegated by anan@heddle.sh
confidence 0.94
signature ed25519:a8f3c1d7
captured 2026-04-22 · 11:47

Context annotations

The next agent sees your constraints before it edits.

Constraints, invariants, and design rationale attach directly to the code they govern, scoped to a file, a symbol, or a line range. When the next agent opens the same function, the annotation is already there.

crates/objects/src/object/state_review.rs fn signing_payload module

Every review signature must be computed over the exact bytes signing_payload produces, never an ad-hoc serialization. That payload is the single source of truth for what a verifier signs over.

The payload always begins with SIGNING_PAYLOAD_VERSION_TAG (hd-rev-sig-v1), so verifiers in any language reproduce the bytes and reject an unknown version outright. Bumping the tag versions the format without silently accepting stale signatures.

Any new signing surface should mirror this contract: a versioned, length-delimited payload from one shared function, so ReviewSignature::validate can authenticate who reviewed which state without trusting the caller's framing.

hd-0t4vb369z687 enforces crates/objects

A codebase that remembers

Scoped to the symbol. Flagged when the code moves.

Constraints and rationale attach to the code they govern, not to a wiki that falls behind, not to a channel that scrolls away. Scoped to the file, the symbol, or the line. Staleness is flagged on demand with heddle context check. When the next agent opens the file, the context is already there.