Open-source reference implementation for CAGE Prebind Assurance at the business consequence boundary
Project description
CAGE-lite
Prebind assurance for AI-agent actions at the business consequence boundary.
Try the live CAGE-lite demo →
Install from PyPI
·
View release v0.1.2
Agent platforms govern how agents run. CAGE governs whether agent actions are allowed to become business consequences.
CAGE-lite is my open-source reference implementation of CAGE: Control, Assurance, and Governance Evaluation.
The broader framework is introduced in CAGE-1. CAGE-lite focuses on making its Prebind Assurance model visible, testable, and easier to evaluate in practice.
The project started with a simple question:
An AI agent can propose an action, but what should happen before that action becomes real?
Before an agent releases a payment, grants access, approves a transaction, updates a system of record, or discloses protected information, an organization should be able to verify that the action is authorized and supported by the required evidence.
CAGE adds that final assurance step before the action becomes a binding business consequence.
CAGE-lite is currently a v1 product preview. The Python package version is 0.1.2, and the current CAGE Warrant schema is version 0.4.
CAGE-1 defines a broader evaluation framework across twelve areas. This release focuses on the Prebind Assurance path: evaluating an action before it crosses the business consequence boundary, recording the decision, and proving whether the resulting effect was blocked or allowed to bind.
Product preview
The CAGE-lite dashboard shows the latest boundary decision, the original held action, recent boundary runs, and the result of replaying the action after the missing evidence is supplied.
The hosted demo automatically loads the standard USD 75,000 held-to-admitted replay, allowing visitors to inspect the boundary decision, CAGE Warrants, replay linkage, and effect proof without installing anything locally.
Quick start
CAGE-lite requires Python 3.10 or later.
Install from PyPI
In an active Python 3.10 or later environment:
python -m pip install cage-lite
python -m cage_lite.demo.payment_replay
This runs the packaged payment replay and writes the generated artifacts under playground/v04-replay-demo/ in the current working directory.
To run the Streamlit dashboard, inspect the examples, or contribute changes, install CAGE-lite from source.
Windows PowerShell
git clone https://github.com/roopamwsure/cage-lite.git
cd .\cage-lite
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .
python -m cage_lite.demo.payment_replay
python -m streamlit run cage_lite/ui/app.py
macOS and Linux
git clone https://github.com/roopamwsure/cage-lite.git
cd cage-lite
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m cage_lite.demo.payment_replay
python -m streamlit run cage_lite/ui/app.py
The replay demo creates one original HELD Warrant and one linked ADMITTED replay Warrant under:
playground/v04-replay-demo/
The Streamlit application loads those artifacts by default. Developer controls remain hidden unless they are explicitly enabled.
Examples
The examples/ directory contains smaller demonstrations of individual CAGE behaviors:
payment_policy_demo.pyevaluates the payment policy and produces a held boundary decision without attempting an effect.payment_no_bind_demo.pyshows that a held action does not execute and records durableNO_BINDeffect proof.payment_approval_demo.pyadds the required approval, admits the action, executes the protected effect, and recordsBOUNDproof.payment_narrowed_demo.pynarrows the requested payment to the agent's permitted scope and records the scoped effect result.
Run an example from the repository root:
python examples/payment_no_bind_demo.py
python examples/payment_approval_demo.py
python examples/payment_narrowed_demo.py
The examples write local CAGE Warrants, evidence records, and effect records under playground/. The generated output is excluded from Git.
Where CAGE fits
CAGE does not replace agent runtimes, IAM, policy engines, guardrails, gateways, approval systems, observability platforms, or agent evaluation frameworks.
Those systems produce important signals. CAGE consumes those signals and evaluates whether a proposed action should be allowed to cross the business consequence boundary.
The diagram above shows the broader CAGE framework. CAGE-lite is the open-source implementation used to make this assurance model visible, testable, and easier to evaluate.
The basic idea
A simplified CAGE flow looks like this:
Agent proposes an action
|
v
Identity, standing, policy, and approval signals
|
v
CAGE prebind boundary
|
+---- HELD ----> NO_BIND ----> Business effect blocked
|
+---- ADMITTED -> BOUND ------> Business effect executed
|
v
CAGE Warrant and effect proof
CAGE Warrant
Each evaluated action produces a CAGE Warrant containing decision proof, effect proof, evidence references, replay linkage, and integrity information.
The Warrant distinguishes between deciding that an action may proceed and proving what happened after that decision.
Held-to-admitted replay
The included demo begins with a USD 75,000 vendor payment that exceeds the agent's USD 50,000 direct standing limit.
Without the required human approval, CAGE holds the action before effect execution:
- boundary:
HELD; - effect:
NO_BIND; - system of record:
NOT_WRITTEN.
The action is then replayed after approval evidence is added. The action, amount, standing limit, and policy remain unchanged. Only the approval state changes.
The replay is admitted, the effect is allowed to bind, and the original held Warrant remains preserved and linked to the replay Warrant.
Project links
- Live CAGE-lite demo
- CAGE-lite on PyPI
- CAGE-lite v0.1.2 release
- CAGE-1 on arXiv
- CAGE-1 author-hosted PDF
- Changelog
- Contributing guide
- Security policy
- Report an issue or request a feature
License
CAGE-lite is licensed under the Apache License 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cage_lite-0.1.2.tar.gz.
File metadata
- Download URL: cage_lite-0.1.2.tar.gz
- Upload date:
- Size: 927.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b2c0d566ed0eabd19d7221ee2308f9a098a5093df56a6b465df9a7de0dfb70d
|
|
| MD5 |
01070d39a745355c3c8810026b425b06
|
|
| BLAKE2b-256 |
77dbfd56291e40f8d4f48e53310634853cdf628c5c17f5cdfba6917fad78e009
|
Provenance
The following attestation bundles were made for cage_lite-0.1.2.tar.gz:
Publisher:
publish.yml on roopamwsure/cage-lite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cage_lite-0.1.2.tar.gz -
Subject digest:
2b2c0d566ed0eabd19d7221ee2308f9a098a5093df56a6b465df9a7de0dfb70d - Sigstore transparency entry: 2214726258
- Sigstore integration time:
-
Permalink:
roopamwsure/cage-lite@92511156c28a37aaae21f484d07c95c93b1037fb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/roopamwsure
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@92511156c28a37aaae21f484d07c95c93b1037fb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cage_lite-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cage_lite-0.1.2-py3-none-any.whl
- Upload date:
- Size: 921.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef0bdaebfc9e2822ae44fa6f8e47bbfa953ac8e96b1c23a999a8f93b29fa0617
|
|
| MD5 |
639cdaa1e511ebba76a17cb4639e4e38
|
|
| BLAKE2b-256 |
ea109ee61fc0c063ef9fb1e89783505a749f80f119ba776c7ddde560148610e5
|
Provenance
The following attestation bundles were made for cage_lite-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on roopamwsure/cage-lite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cage_lite-0.1.2-py3-none-any.whl -
Subject digest:
ef0bdaebfc9e2822ae44fa6f8e47bbfa953ac8e96b1c23a999a8f93b29fa0617 - Sigstore transparency entry: 2214726307
- Sigstore integration time:
-
Permalink:
roopamwsure/cage-lite@92511156c28a37aaae21f484d07c95c93b1037fb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/roopamwsure
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@92511156c28a37aaae21f484d07c95c93b1037fb -
Trigger Event:
workflow_dispatch
-
Statement type: