To try it
Node.js 18 or newer, Python 3.11 or newer, and git. No API keys are needed for the demo.
Usage guide
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"
01 / Requirements
Aesop is a kernel. It does not know your repositories, rules, or accounts, so you provide them.
Node.js 18 or newer, Python 3.11 or newer, and git. No API keys are needed for the demo.
Git and a POSIX shell (Git Bash on Windows) for the pre-push policy and daemon scripts, plus Claude Code signed in for workers.
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
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
This table lists commands that appear in the project's README and docs. Nothing else is claimed.
| Command | What it does |
|---|---|
npx @matt82198/aesop my-fleet --name "api" --repos "/path/to/repo" | Installs the kernel into a new fleet directory. |
npx @matt82198/aesop doctor | Shows what is still missing. |
npx @matt82198/aesop init --ci-mode hosted|self-hosted-runner|local-receipt-gate | Picks 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 --json | Preflight readiness check (Node.js, Python, git, config, dirs, hook, port) plus a report-only CI capability table, as JSON. |
npx @matt82198/aesop reproduce | Offline verification suite: the full test suite in a repo, self-checks when installed. |
npx @matt82198/aesop status | One-shot fleet status snapshot (heartbeats, dashboard port, git branch). |
npx @matt82198/aesop fleet | One-shot fleet snapshot (agents, heartbeats, tracker lanes, orchestrator status). |
npx @matt82198/aesop wizard | Interactive onboarding (prompts for project name, repos, port). |
npx @matt82198/aesop watch | Run before /power and /buildsystem when running one wave. |
npx @matt82198/aesop dash --demo | Starts the dashboard on a seeded, self-identifying demo snapshot. No API keys. |
/power | Skill. Reads your CLAUDE.md and MEMORY.md. |
/buildsystem | Skill. Runs after /power in the first-wave walkthrough. |
These run from the root of a clone of the source repository.
| Command | What it does |
|---|---|
python -m unittest tests.test_event_store_core | Runs 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-stores | Read-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_pubkeys | Verifies the signed provenance record offline. |
Read the blueprint page: Quickstart.
04 / First run
The README lists six steps. The first-wave guide in the repository (docs/FIRST-WAVE.md) walks through them.
Run the scaffold command from the install section, then npx @matt82198/aesop doctor to see what is still missing.
Copy aesop.config.example.json to aesop.config.json and set repos. Field reference: docs/CONFIGURE.md.
Copy CLAUDE-TEMPLATE.md to ~/.claude/CLAUDE.md and edit it. Add a MEMORY.md built from docs/MEMORY-TEMPLATE.md. /power reads both.
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.
Run gh auth login for merges and sign in to Claude Code for workers. Add API keys only if you use an API backend.
Run npx @matt82198/aesop watch, then /power, then /buildsystem.
Read the blueprint page: Quickstart.
05 / Structure your repo
Your rules, project map and dispatch contract live in your repo and your brain, not in the kernel.
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
Aesop's LANE-CONTRACT.md is one project's dispatch contract, an example rather than a template to copy as-is.
LANE-CONTRACT.md
A change reaches CI through a pipeline of stage lanes (spec, impl, gate, ship, review), never one lane.
docs/concepts/stage-lanes.md
Read the blueprint page: Stage lanes, Stage matrix.
06 / Watch and recover
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
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.