Receipt-native AI safety toolkit
Project description
Assay
Tamper-evident audit trails for AI systems. Logs record what you say happened. Assay makes the record tamper-evident, completeness-checkable, and independently verifiable -- including by someone who does not trust you. Integrity PASS + claims FAIL is an honest failure: authentic evidence that controls were violated. Assay does not prove external truth; it proves evidence integrity and makes omission detectable. Easier than a spreadsheet, harder to bullshit.
pip install assay-ai && assay quickstart
60-Second Demo
No API key needed. This runs a two-act scenario with synthetic data:
- Act 1: Agent uses gpt-4 with a guardian check. Result: integrity PASS, claims PASS.
- Act 2: Someone swaps the model and drops the guardian. Result: integrity PASS, claims FAIL.
That second result is an honest failure -- authentic evidence proving the run violated its declared standards. Not a cover-up. Not theater. Exit code 1.
assay demo-incident # two-act scenario: honest PASS vs honest FAIL
assay demo-challenge # optional CTF: spot the tampered pack
assay demo-pack # optional: build + verify from scratch
The Golden Path
# 0. See Assay in action (recommended first step)
assay quickstart
# Or: assay onboard . (guided project setup with doctor + CI guidance)
# 1. Find uninstrumented LLM calls
assay scan . --report # generates a self-contained HTML gap report
# 2. Instrument (one line per SDK, or auto-patch)
assay patch .
# from assay.integrations.openai import patch; patch()
# 3. Produce a signed proof pack
assay run -c receipt_completeness -- python my_app.py
# Add -c guardian_enforcement when you have a policy gate
# 4. Verify + explain
assay verify-pack ./proof_pack_*/
assay explain ./proof_pack_*/
# 5. Lock the verification contract
assay lock write --cards receipt_completeness -o assay.lock
assay verify-pack ./proof_pack_*/ --lock assay.lock --require-claim-pass
How It Works
Assay separates two questions on purpose:
- Integrity: "Were these bytes tampered with after creation?" (signatures, hashes, required files)
- Claims: "Does this evidence satisfy our declared governance checks?" (receipt types, counts, field values)
| Integrity | Claims | Exit Code | Meaning |
|---|---|---|---|
| PASS | PASS | 0 | Evidence checks out, behavior meets standards |
| PASS | FAIL | 1 | Honest failure: authentic evidence of standards violation |
| FAIL | -- | 2 | Evidence has been tampered with |
| -- | -- | 3 | Bad input (invalid arguments, missing files) |
The split is the point. Systems that can prove they failed honestly are more trustworthy than systems that always claim to pass.
Commands
| Command | Purpose |
|---|---|
assay quickstart |
One command: demo + scan + next steps |
assay demo-incident |
Two-act scenario: passing run vs failing run |
assay demo-challenge |
CTF-style good + tampered pack pair |
assay demo-pack |
Generate demo packs (no config needed) |
assay onboard |
Guided setup: doctor -> scan -> first run plan |
assay scan |
Find uninstrumented LLM call sites (--report for HTML) |
assay patch |
Auto-insert SDK integration patches into your entrypoint |
assay run |
Wrap command, collect receipts, build signed pack |
assay verify-pack |
Verify a Proof Pack (integrity + claims) |
assay explain |
Plain-English summary of a proof pack |
assay ci init github |
Generate a GitHub Actions workflow |
assay lock write |
Freeze verification contract to lockfile |
assay lock check |
Validate lockfile against current card definitions |
assay cards list |
List built-in run cards and their claims |
assay cards show |
Show card details, claims, and parameters |
assay doctor |
Preflight check: is Assay ready here? |
Documentation
- Quickstart -- install, golden path, command reference
- For Compliance Teams -- what auditors see, evidence artifacts, framework alignment
- Repo Map -- what lives where across the Assay ecosystem
- Pilot Program -- early adopter program details
Scan Study
We scanned 30 popular open-source AI projects for tamper-evident audit trails. Found 202 high-confidence LLM SDK call sites across 21 projects. Zero had evidence emission at any call site. Full results.
Get Involved
- Try it:
pip install assay-ai && assay quickstart - Questions / feedback: GitHub Discussions
- Bug reports: Issues
- Pilot integration: Want help instrumenting your AI stack? Open a pilot inquiry
Related Repos
| Repo | Purpose |
|---|---|
| assay | Core CLI, SDK, conformance corpus (this repo) |
| assay-verify-action | GitHub Action for CI verification |
| assay-ledger | Public transparency ledger |
License
Apache-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 assay_ai-1.3.2.tar.gz.
File metadata
- Download URL: assay_ai-1.3.2.tar.gz
- Upload date:
- Size: 126.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a714893a4fc23377d89f84be4d1675fdc5fd1a659d8f30215d8469128c8be34
|
|
| MD5 |
3e4075d4d1753878443fd14052714fa2
|
|
| BLAKE2b-256 |
3d4b0ca5dd916cb0049ec8fd01e9b6292c0f783219a66266766d71e78c152b7f
|
File details
Details for the file assay_ai-1.3.2-py3-none-any.whl.
File metadata
- Download URL: assay_ai-1.3.2-py3-none-any.whl
- Upload date:
- Size: 141.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae5f10e7ccee118e0ec730f313be3d21d7269ee6d5811a1f669d398f8a82ce13
|
|
| MD5 |
6c02a00e12ed00590f997250869f17c4
|
|
| BLAKE2b-256 |
9e87293330e0409d972fda0ccf940c5086e9666146571869065db3a7b353ac47
|