Skip to main content

aegis-verify

Offline verifier for Aegis evidence bundles. Zero network calls. One pip dep (cryptography). Runs on an air-gapped machine.

Built for an EU AI Act auditor who wants to verify what your AI agents did — or were stopped from doing — without trusting Aegis or being connected to the internet.

Install

pip install cryptography           # the only runtime dependency
# or, from this repo:
pip install -e tools/aegis_verify

Use

# verifier reads the bundle file and prints a report
python -m aegis_verify --bundle evidence_bundle.json

# fail any check → exit 1; pass all → exit 0 (CI-friendly)
python -m aegis_verify --bundle evidence_bundle.json && echo OK

Output on a healthy bundle:

aegis-verify report
  bundle:     aegis-evidence-bundle/2026-06
  framework:  eu-ai-act
  tenant:     00000000-0000-0000-0000-000000000001
  records:    482
  keys:       1
  roots:      6

Checks:

*** PASS *** every signature, hash chain, and Merkle root in this bundle verifies.

Output on a tampered bundle:

Checks:
  [FAIL] V3_prev_hash_chain_per_shard — 1 prev_hash mismatch(es) (first: <uuid>)
*** FAIL *** at least one check failed.
             first broken row: <uuid>

What it verifies

Check What it proves
V1_bundle_format_recognized The bundle is a format the verifier understands
V2_event_hash_recompute Each row's event_hash recomputes from its content — no row was edited after the fact
V3_prev_hash_chain_per_shard The intra-day hash chain has zero breaks — no row was deleted
V4_merkle_root_signatures Each daily Merkle root was ed25519-signed by Aegis (the embedded public key proves it)
V5_prev_root_hash_chain The cross-day Merkle-root chain has zero breaks — no day was excised
V6_retention_metadata_consistent The bundle's claimed retention policy is honest given the rows actually present

Why this matters

The EU AI Act high-risk obligations reach full enforcement on August 2, 2026 (Article 12: tamper-evident record-keeping ≥ 6 months; Article 14: human oversight events). Penalties: 7% global turnover / €35M.

Every other AI-guardrail vendor's evidence story ends with "trust our dashboard." That doesn't survive an external auditor.

This verifier ends with: "the auditor ran a 16 KB Python script on their own laptop and got PASS. No trust required."

Bundle format

See verifier.py's module docstring for the full schema. In short: the bundle is one self-contained JSON file containing the public keys, the signed daily Merkle roots, every audit row in scope, and a per-row mapping to EU AI Act articles / NIST AI RMF controls / SOC 2 control IDs.

License

Apache 2.0. The verifier is and will remain open-source so auditors can fork it and run their own copy.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aegis_aevf-1.1.1.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aegis_aevf-1.1.1-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file aegis_aevf-1.1.1.tar.gz.

File metadata

  • Download URL: aegis_aevf-1.1.1.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for aegis_aevf-1.1.1.tar.gz
Algorithm Hash digest
SHA256 9efd9586a7f6ff42b55fede2bf33ae8a031ca3e19536ac0eafebe8767ceb4781
MD5 7265119d1b7fbf64c40436556accc43c
BLAKE2b-256 40797ac064bc5cd0fb4d57cedea1245a3d8c5c3e17c25e729bfeb15982bd0c0e

See more details on using hashes here.

File details

Details for the file aegis_aevf-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: aegis_aevf-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for aegis_aevf-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17da4ae74918facd36d4bbdc99f84360380f2ac2046e8fa693ee4e3eb310dd4c
MD5 a7b82a7a1ad6744a7bf8a0ca245f4e66
BLAKE2b-256 e6670e19815a1385dd2dd6601794d8a7c3a25895a0b641f3aa7dbb3f9855d020

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page