A portfolio set up by hand drifts, one project at a time.

An operator running many projects at once needs each one wired the same way: the same checks, the same hook entry point, the same place to keep project-wide config. Set that up by hand and it drifts. One project gets a rule the others miss, a config key falls out of date, a hook points at a binary that has moved. The drift stays invisible until a session leans on it.

ae-sys is the front door that removes the hand work. One command writes a project's config, its hook router, and its Claude Code settings, then installs and reports on the two sibling binaries it drives: hux, the checker that holds every edit to shape, and ae-handover, the continuity tool that carries state across sessions. One config per project root governs all three. The harness becomes something a project inherits, not something rebuilt each time.

Three binaries on one shared substrate, driven from one front door.

ae-sys is one binary in a Rust workspace of three. Each installs and upgrades on its own; a single config file at the project root drives all three, and a single hook router is the one entry point for every lifecycle event. ae-sys is the front door of the set: it installs the others, migrates legacy config, and reports health across the family.

Anatomyae-sys
01Front door
the binary that installs the family and sets up a project
02Config
one file at the project root drives all three binaries
03Substrate
one shared crate layer: config, audit trail, machine-checked event schema
04Router
one entry point for every lifecycle event the harness sees
holds every edit to shape
carries project state across sessions

One event in, one verdict out, the same shape on either ground.

The harness has to run in two places: a desktop with the full toolchain, and Anthropic's remote runtime, where the binaries do not exist. The router ae-sys installs reads the environment and decides. On the desktop it hands the event to the native executor; in the remote runtime it falls back to a small per-event bash subset covering the core lifecycle. Either way the verdict comes back in one shape, so the model sees a single contract on both grounds.

event to verdictae-sys
Lifecycle eventthe model edits, runs, or finishes a tool call
Native / desktop
01Router
the full toolchain is present
02Dispatch
hand the event to the native executor, routed by type
03Verdict
the executor returns its decision
Remote / runtime
Router
no native binary in the runtime
Subset
a small per-event bash script covers the core lifecycle
Passthrough
an unrecognised event passes through clean
Verdictone shape both paths: continue · block · approve

The commands that set a project up and keep it true.

ae-sys is the management surface for the harness: an ordered set of commands that take a project from bare to governed and hold it there. The sequence runs from first setup through health checks, and auto-setup folds it into the one hook Claude Code fires on a fresh project.

Setup to governedae-sys
01 / init
Config, router, and settings, seeded from the project type.
←
02 / update
Router and config to the current schema.
03 / migrate
Legacy config to the unified format.
04 / doctor
Audit against the live project, fix in place.
05 / info
Versions, config, and hooks across all three.
06 / auto-setup
Wired the first time the model visits.
One config
One file at the project root governs all three.
→

A harness is only as disciplined as its least-governed project.

Before / afterae-sys
Without it
Each project is wired by hand: three loose tools and a config that drifts apart from one project to the next.
With ae-sys
One command installs the family and writes one rule set, so every project answers to the same harness.
work