Schema Contracts are per-tool JSON-Schema files that declare the shape an agent is allowed to send to — and receive from — each tool it calls. The runtime gate validates every call against the matching contract, and the contract-set fingerprint is stamped into the AVAR receipt so a reviewer can see which contract set was declared at execution time.
The Aarmos CLI is not publicly distributed. Commands here are reference examples, not instructions you can run today.
Workflow
aarmos contracts init --from run.avar.json— scaffold contracts from a real receipt.aarmos contracts watch— proposals for new tools land in.aarmos/contracts/proposals/.aarmos contracts accept <tool>— promote a proposal intocontracts/.aarmos contracts lint contracts— warn on shape drift, unknown keys, bad mode.aarmos contracts diff --from run.avar.json— compare promoted contracts against a receipt.aarmos contracts fingerprint --write— canonical sha256 over the contract set.
Modes
Every contract sets mode to warn or strict. In warn, the gate lets the call proceed and records a drift note on the receipt. In strict, the gate refuses the call before the tool sees it. Modes are set per contract so you can tighten one tool at a time.
Fingerprint binding
fingerprint canonicalises the promoted set (sorted keys, sha256) so two machines with the same contracts always compute the same digest. When the runtime records a receipt, it embeds this fingerprint. Verification checks receipt integrity and signatures; it does not currently recompute the fingerprint from your contract files. To confirm a match, recompute it yourself with fingerprint and compare.
What contracts are not
- Not policy. Policy decides whether a call is allowed; contracts decide whether its shape is well-formed.
- Not a marketplace — contracts live in your repo, not in a shared registry.
- No auto-repair. Every promotion is an explicit
accept.