Azper is a local-first adaptive execution runtime. The current implementation is its durable foundation: typed Contracts, Runs, and validated PlanIR persisted in SQLite with an attributable event log.
It is intentionally not yet an autonomous execution engine. Effects, Evidence, Verification, recovery, capabilities, model routing, memory, and the TUI remain future slices.
Build the CLI:
go build -o azper ./cmd/azperCreate a Contract in a local database:
./azper contract create \
--db ./azper.db \
--objective "Persist a durable execution request" \
--success "The contract can be read after restart"Copy the returned id, then start and inspect a Run:
./azper contract show --db ./azper.db CONTRACT_ID
./azper run start --db ./azper.db CONTRACT_ID
./azper run show --db ./azper.db RUN_ID
./azper trace --db ./azper.db RUN_IDExecute one governed local file write from that Run:
mkdir -p ./azper-output
./azper file write \
--db ./azper.db \
--run RUN_ID \
--scope ./azper-output \
--path result.txt \
--content "verified bytes" \
--idempotency-key result-v1This explicit command creates validated PlanIR, issues a 15-minute Run-bound filesystem.write grant scoped to ./azper-output, stages the previous file as a content-addressed Artifact, performs an atomic replacement, records executor Evidence, and independently reads and hashes the target before the Verifier commits the Effect. Repeating the same key and inputs returns the same Effect; changing the content under that key is rejected.
After an interrupted process, reconcile all durable Executing Effects owned by the CLI worker:
./azper recover --db ./azper.dbRecovery commits Effects whose desired state can be proven, safely resumes still-authorized writes whose previous state is unchanged, and reports expired or ambiguous work under needs_attention.
Expected behavior:
- Contract creation returns a
ctr_...identifier and writes oneContractCreatedevent atomically. - Run creation returns a
run_...identifier inRunningstate and writes oneRunStartedevent atomically. showandtracestill return the persisted objects after another process opens the database.- A Run cannot start for a missing Contract.
- A file Effect reports
Committedonly after independent BLAKE3-256 verification.
The Run remains Running: Contract-level success evaluation and Run completion are not implemented, so the file Effect cannot claim the broader Contract is complete.
go test ./...
go test -race ./...
go vet ./...See docs/ENGINEERING_STATE.md for the evidence-backed subsystem status and docs/ROADMAP.md for the next vertical slices.