agentrust.io

Runnable Demos

Don't take the spec on trust.
Run it.

Ten demos, about twelve minutes end to end. Four cover custody of model weights. Five govern what an agent does at the tool boundary. One governs model calls through an OpenAI-compatible endpoint.

Everything runs in software mode with CMCP_DEV_MODE=1. No confidential-computing hardware, no cloud account, no signup.

Quick start

git clone https://github.com/agentrust-io/demos && cd demos
pip install -r requirements.txt
export CMCP_BEARER_TOKEN=demo-token
python demo.py            # all ten, pausing before each
python demo.py 6          # just demo 6

The requirements install cMCP for demos 1 to 5, Weight Custody Manifest for demos 6 to 9, and the OpenAI client for demo 10. Source: github.com/agentrust-io/demos.

Model Weights

Securing model weights

A fine-tune trained on your own data is IP that never existed publicly, and the weights are where it lives. These four demos treat the weights as the asset: bind the exact checkpoint, release the decryption key only into a serving stack that proves what it is, and keep the lineage of every derivative verifiable back to its base.

The honest limit, stated up front. Against an adversary who physically owns the silicon, no current confidential-computing platform is custody-grade. TEE.fail and BadRAM are the reason. What these demos give you is accountability-grade custody under an operator-trust model, plus a threshold scheme (demo 9) for when one operator's word is not enough. Anyone selling you weight protection "without operator trust assumptions" is overstating what the hardware does.
Demo 6Weight custody~60 seconds

A Weight Custody Manifest binds the checkpoint's exact weights_hash, gates the decryption key behind attestation, and carries the fine-tune's lineage.

python demo-06-weight-custody/run.py
Demo 7Closed-weight custody~60 seconds

The mirror of demo 6. Here the base model is closed, a frontier lab shipping weights into a customer's or a sovereign's own enclave, so the weights themselves are the secret and the job is keeping the key off the operator.

python demo-07-closed-weight/run.py
Demo 8Derivative lineage~60 seconds

Fine-tune inside the enclave on private data and the result is novel IP. It gets its own signed manifest with a derived_from pointer and a rights_holder split.

python demo-08-derivative-lineage/run.py
Demo 9Sovereign threshold~90 seconds

This is the answer to the limit in the callout above. If a hardware owner who forges one attestation could release a key, then never let one release be enough.

python demo-09-sovereign-threshold/run.py

Agent Governance

Governing what an agent does

Demos 6 to 9 protect the weights. These five govern the tool boundary: what the agent is allowed to call, under which workflow, with what compliance attributes, and what evidence survives afterwards. Cedar policy is enforced on every call and each session closes with a signed TRACE claim.

Demo 1cMCP in action~90 seconds

An agent calls three tools through the cMCP gateway. Cedar is enforced on every call, and the session closes with a signed TRACE claim carrying the policy bundle hash.

python demo-01-cmcp-in-action/run.py
Demo 2Policy swap is an attestation failure~90 seconds

The operator quietly loads a different policy bundle. The claim's hash changes, and a verifier pinned to the old hash rejects it.

python demo-02-policy-swap/run.py
Demo 3Offline TRACE verification~60 seconds

Verify the signed claim with no gateway, no server, and no network call at all.

python demo-03-offline-trace/run.py
Demo 4Context-aware enforcement~90 seconds

The same tool, the same arguments, allowed in one workflow and denied in another. Authorization tracks the declared call context, not the tool's name and not the model's stated intent.

python demo-04-context-enforcement/run.py
Demo 5Attribute-based enforcement~90 seconds

Deny on the tool's compliance attributes rather than its name. A tool that is not BAA-covered is refused by one guardrail rule, whatever it is called.

python demo-05-compliance-domain/run.py
Demo 10Governed model calls~90 seconds

Put policy in front of an OpenAI-compatible model endpoint and route each request according to its data class.

python demo-10-model-gateway/run.py

Where to go next