Agent-native · deterministic · zero-token

The workflow engine
that proves its own work.

A2W lets AI agents author, validate, run, verify, and evolve workflows over a narrow deterministic JSON IR. Everyday runs are reproducible byte-for-byte and never touch an LLM — and the system reports calibrated evidence that the outcome is correct, not just that it ran.

20 crates 391 tests 0 tokens / run CI green schema v7
The compounding loop

Author → validate → run → verify → promote → evolve

Tap any stage. Items flow through a concurrent DAG with guaranteed lineage; the loop turns a verified run into reusable, searchable expertise.

Agentauthors IR IRJSON workflow Validatereject-before-run Enginezero-token DAG Verifyconfidence report Promoteskill library Searchevolve · holdout
data flow self-improvement loop verified output

Tap a stage to inspect it

The pipeline is the product: a deterministic engine makes correctness testing nearly free, so every run can be verified and the good ones compound into a skill library.

The honest moat

“It ran” is not “it’s right.”

A2W’s engine is deterministic and per-item-independent by construction, so a class of checks holds for any valid workflow. Those verify the engine, not the outcome — and the report never lets one read as the other.

Engine-invariants (not outcome evidence)

re-run identity determinism
permutation invariance order
duplication scaling fan-out
additivity independence

Outcome evidence (what certifies)

spec: every item has total
semantic: scaling price ×k scales total ×k intent
golden fixture match
OUTCOME: verified — every check holds.

A workflow that computes total from the wrong field passes every engine-invariant — yet a spec-derived semantic relation catches it. Engine-verified ≠ outcome-verified.

Proven, not promised

Run live. Audited independently.

The flagship workflows weren’t only unit-tested — they were driven over real HTTP against a running server, then checked by a second agent that never touched A2W.

Live production ETL

webhooktrigger GET /users200 · 10 users loop/body normalizeTLD policy branchis_valid POST /posts5 × 201 created quarantine5 · bad TLD merge10

webhook → fetch → loop → normalize → branch → {load · quarantine} → merge

Observed — real, run twice

GET /users200, 10 real users 282 / 491 ms
5 × POST /posts201 Created real write
5 quarantined untrusted TLD
6 external calls · 0 LLM tokens 16 events
Independent agent, by hand: 5 load / 5 quarantine — exact match.
Live multi-agent run

Five agents · the full loop · over HTTP

Each authored a workflow and drove every stage against a running server with API-key auth and an AES-256-GCM vault. Production runs were zero-token; promotion gated on a disjoint holdout.

✓ author ✓ run · zero-token ✓ verify · 1.00 ✓ promote · holdout 1.0 ✓ find · top match ✓ evolve · 0.0→1.0

5 / 5 agents passed all 6 steps — area · discount · distance · invoice · payroll. Skills, runs & step records confirmed by reading the SQLite file directly.

20 crates, four layers

Small, sharp, composable.

A narrow IR at the core; everything else is a thin, testable layer around it.

IR & validity

a2w-ir · a2w-validator · a2w-expr — a narrow JSON IR with reject-before-execute static validity and a sandboxed, deterministic expression DSL.

Engine & nodes

a2w-engine · a2w-nodes — a concurrent async DAG with guaranteed item lineage; 14 tested node kinds; bounded fan-out; zero-token by design.

Verification spine

a2w-verify — spec assertions, golden fixtures, semantic relations, cross-checks → a calibrated report separating engine guarantees from outcome evidence.

Memory & search

a2w-skills · a2w-search — promote verified workflows into a signature-indexed library; evolve seeds with validity-preserving, holdout-certified search.

Serving

a2w-mcp · a2w-server · a2w-store — MCP tools + REST over a sqlite store with an AES-256-GCM vault; the loop runs through the persisted surface.

Hardened

SSRF IP-pinning, fail-closed vault, MCP env denylist, WASM sandbox, loopback + bearer auth. Eight adversarial audit rounds, converged.

0
crates
0
tests, 0 failing
0
node kinds, all tested
0
tokens per run
Quickstart

Run it in two commands.

# build + test the workspace (deterministic, network-free)
cargo test --workspace

# serve the REST API + dashboard with the credential vault enabled
A2W_MASTER_KEY="$(head -c 32 /dev/urandom | base64)" \
A2W_API_KEY="dev-key" cargo run -p a2w-server
# → http://127.0.0.1:8080   (POST /verify · POST /skills · GET /skills)