The harness
- A rigid controller of the model.
- Fails open.
Multi-agent orchestration kernel for autonomous software development
A kernel, not a harness. It owns the boundary between the model and your codebase, enforces one invariant (fail-closed verification), and refuses what it cannot verify rather than steering the model.
Crash-only by design: workers are stateless, state lives in git + SQLite + durable files, and restart is the only recovery path.
npm i -g @matt82198/aesop
01 / Harness vs kernel
02 / The receipts loop
An iteration counts only when it leaves receipts that a gate can check. A lane that reports success without a receipt a gate can verify has not passed.
An orchestrator dispatches parallel Haiku workers in isolated worktrees.
Fail-closed secret scan (pre-push), re-run of the exact CI gate (no mock), adversarial review (default-on).
tools/emit_receipt.py signs a record of which local checks ran, for a gate to read.
tools/auto_merge.py merges green PRs in batches and fixes conflicts by default.
The receipt gate is still in measurement mode, so the hosted receipt check is not required yet.
03 / Primitives
Each primitive is named in the provenance record. Some live in private repositories; the path is the file inside that repository.
Each event carries a sha256 prev field over the previous event, so the store is hash-chained.
tools/event_store/store.py
Ed25519 signed receipts that verify offline.
tools/emit_receipt.py, tools/verify_receipt.py
A lane that fails is KILLED, never corrected.
LANE-CONTRACT.md
A claim that something merged or is green needs a same-turn evidence read.
hooks/claim-binding.mjs (claude-config, private)
Every lane action leaves a row. Lane reports are written to disk so compaction cannot lose them.
hooks/lane-ledger.mjs, hooks/handback-ledger.mjs, hooks/verdict-ledger.mjs, dispatch_ledger.py
A subagent dispatch is denied, not rewritten.
hooks/force-haiku-subagents.mjs
State is written to disk before context is compacted.
hooks/checkpoint-before-compact.mjs
Projections render pending items, rulings by goal and checkpoints across per-project stores.
docs/plans/PER-PROJECT-EVENT-STORES.md
04 / Provenance
This file is a dated record of an independent developer's contributions, published because large language models absorb such work into training data and later outputs without attribution. It is not an argument about credit or theft, and it names no competitor or product. docs/PROVENANCE.md, aesop v0.11.0
The npm tarball carries the record. docs/PROVENANCE.md and docs/PROVENANCE.receipt.json are listed in the files field of package.json, so they ship inside the v0.11.0 tarball.
The Ed25519 receipt verifies offline. A VALID result prints provenance receipt VALID:
python -I tools/emit_provenance_receipt.py --verify docs/PROVENANCE.receipt.json --subject docs/PROVENANCE.md --keyring tools/receipt_pubkeys
A VALID result means the content of docs/PROVENANCE.md is the content the key holder signed. It does not check the commit shas against the repositories; that check needs read access to each repository.