Aesop Kernel

Usage guide

Using Aesop

Install, run one wave, shape your repo for lanes. Only commands the project documents appear here.

The design behind these steps is on the system page. The source is public at github.com/matt82198/aesop; commands marked "from a checkout" run in a clone of it. Factual sentences are traced to rows in SOURCES.md.

npx @matt82198/aesop my-fleet --name "api" --repos "/path/to/repo"

  1. Requirements
  2. Install
  3. Commands
  4. First run
  5. Structure your repo
  6. Watch and recover
  7. Verify an event store

01 / Requirements

What you need on the machine.

Aesop is a kernel. It does not know your repositories, rules, or accounts, so you provide them.

To try it

Node.js 18 or newer, Python 3.11 or newer, and git. No API keys are needed for the demo.

To run the loop

Git and a POSIX shell (Git Bash on Windows) for the pre-push policy and daemon scripts, plus Claude Code signed in for workers.

Accounts

Run gh auth login for merges and sign in to Claude Code for workers. Add API keys only if you use an API backend.

Licensing: Aesop is open source under the MIT License. Releases 0.8.0 through 0.11.0 were published under PolyForm Noncommercial 1.0.0; versions up to 0.7.0 were MIT. Bug reports, questions, documentation fixes and pull requests are welcome: see CONTRIBUTING.md. Report vulnerabilities as described in SECURITY.md.

Read the blueprint page: Quickstart.

02 / Install

Scaffold a fleet from npm.

The package is @matt82198/aesop on npm. The scaffold command installs the /power and /buildsystem skills into ~/.claude/skills/ unless you pass --no-skills.

npx @matt82198/aesop my-fleet --name "api" --repos "/path/to/repo"
npx @matt82198/aesop doctor

doctor shows what is still missing. The CLI copies the pre-push policy into the hooks of the repo it scaffolds.

Adding --install-deps runs npm install and pip install -r requirements.txt in the target. --force replaces any existing .git/hooks/pre-push and overwrites installed skills. --yes skips interactive prompts and uses defaults. --repos takes comma-separated repo paths.

Read the blueprint page: Quickstart, Install the hook.

03 / Commands

The documented commands.

This table lists commands that appear in the project's README and docs. Nothing else is claimed.

CommandWhat it does
npx @matt82198/aesop my-fleet --name "api" --repos "/path/to/repo"Installs the kernel into a new fleet directory.
npx @matt82198/aesop doctorShows what is still missing.
npx @matt82198/aesop init --ci-mode hosted|self-hosted-runner|local-receipt-gatePicks the CI workflow template. hosted is the default. local-receipt-gate is refused until the receipt gate ships. Also takes --name, --force and --self-hosted-labels.
npx @matt82198/aesop doctor --jsonPreflight readiness check (Node.js, Python, git, config, dirs, hook, port) plus a report-only CI capability table, as JSON.
npx @matt82198/aesop reproduceOffline verification suite: the full test suite in a repo, self-checks when installed.
npx @matt82198/aesop statusOne-shot fleet status snapshot (heartbeats, dashboard port, git branch).
npx @matt82198/aesop fleetOne-shot fleet snapshot (agents, heartbeats, tracker lanes, orchestrator status).
npx @matt82198/aesop wizardInteractive onboarding (prompts for project name, repos, port).
npx @matt82198/aesop watchRun before /power and /buildsystem when running one wave.
npx @matt82198/aesop dash --demoStarts the dashboard on a seeded, self-identifying demo snapshot. No API keys.
/powerSkill. Reads your CLAUDE.md and MEMORY.md.
/buildsystemSkill. Runs after /power in the first-wave walkthrough.

From a checkout

These run from the root of a clone of the source repository.

CommandWhat it does
python -m unittest tests.test_event_store_coreRuns the event store unit tests.
python -I tools/event_store/cli.py verify --path <store>Recomputes the hash chain of one store and exits 1 on any problem.
python -I tools/event_store/cli.py project rulings --all-storesRead-only view of rulings across per-project stores.
python -I tools/emit_provenance_receipt.py --verify docs/PROVENANCE.receipt.json --subject docs/PROVENANCE.md --keyring tools/receipt_pubkeysVerifies the signed provenance record offline.

Read the blueprint page: Quickstart.

04 / First run

From install to one wave.

The README lists six steps. The first-wave guide in the repository (docs/FIRST-WAVE.md) walks through them.

  1. Install the kernel

    Run the scaffold command from the install section, then npx @matt82198/aesop doctor to see what is still missing.

  2. Point it at your repos

    Copy aesop.config.example.json to aesop.config.json and set repos. Field reference: docs/CONFIGURE.md.

  3. Write your brain

    Copy CLAUDE-TEMPLATE.md to ~/.claude/CLAUDE.md and edit it. Add a MEMORY.md built from docs/MEMORY-TEMPLATE.md. /power reads both.

  4. Name a machinery directory (optional)

    Set CONDUCTOR_ROOT to a directory you own. The watchdog derives a sibling fleet root only for the canonical aesop checkout and otherwise refuses to start.

  5. Provide keys and accounts

    Run gh auth login for merges and sign in to Claude Code for workers. Add API keys only if you use an API backend.

  6. Run one wave

    Run npx @matt82198/aesop watch, then /power, then /buildsystem.

Read the blueprint page: Quickstart.

05 / Structure your repo

Make it easy for a small lane to do one job.

Your rules, project map and dispatch contract live in your repo and your brain, not in the kernel.

A domain map

Keep a project map and per-domain rules. The template shows one layout; Aesop's own root CLAUDE.md is an example, not part of the package.

CLAUDE-TEMPLATE.md

Your own contract

Aesop's LANE-CONTRACT.md is one project's dispatch contract, an example rather than a template to copy as-is.

LANE-CONTRACT.md

Stage lanes

A change reaches CI through a pipeline of stage lanes (spec, impl, gate, ship, review), never one lane.

docs/concepts/stage-lanes.md

Rules for how lanes work in your repo

  • One worktree per lane. A lane works in its own worktree, and the pre-push gates run before anything reaches CI.
  • One lane, one stage. Each stage is a separate dispatch, and a brief names exactly one stage. See the system page.
  • Failure changes the contract. A failed lane is killed, and the contract is amended before a fresh lane is dispatched.

Read the blueprint page: Stage lanes, Stage matrix.

06 / Watch and recover

Dashboard and recovery.

The dashboard is a live fleet view, with a zero-key demo mode (npx @matt82198/aesop dash --demo).

The loop is crash-only, so recovery is a restart from disk. The watchdog has a halt switch: while a halt sentinel exists it logs HALTED and skips its work, and self-heal leaves it alone. A stale watchdog heartbeat triggers a restart only when no halt is in effect.

Read the blueprint page: Crash-only operation.

07 / Verify an event store

Check a hash chain in a few steps.

The repository guide checks an event store's hash chain and shows what a broken chain looks like. Nothing needs installing beyond the Python standard library. From a checkout:

# Step 1: run the unit tests; stop here if the suite does not print OK
python -m unittest tests.test_event_store_core

# Step 2: create a throwaway store (replace <work> with an empty directory outside any git repository)
#   <work>/stores/demo/store.json  contains {"project": "demo", "schema": 2}
#   <work>/registry.json           contains {"stores": {"demo": {"path": "<work>/stores/demo", "goals": ["G9"]}}}
mkdir -p <work>/stores/demo/events
export EVENT_STORES_REGISTRY=<work>/registry.json
python -I tools/event_store/cli.py append --project demo --kind note --actor orchestrator --text "first demo event" --ref goal=G9
python -I tools/event_store/cli.py append --project demo --kind ruling --actor orchestrator --text "second demo event" --ref goal=G9
# expected: appended demo seq=1, then appended demo seq=2

# Step 3: verify a store (exit 0 when clean, 1 when a problem is found)
python -I tools/event_store/cli.py verify --path <store>

verify is tamper-evident, not tamper-proof: editing only the last line passes, because no later line stores its hash. The full steps, including the append-only guard, are in docs/guides/verify-event-store.md.

Read the blueprint page: Verify an event store, Event store.