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.0.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.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aegis_aevf-1.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 06c7144517d1c7e53463b88e3e77d01b3014a77a3d20fee8dddd3867b75ae8b9
MD5 568429b13d4b233f1f76b1542bd862fa
BLAKE2b-256 a8badc2981636da2d41ed199784e169296577bf10f1e4309888f32c8a1681f6c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aegis_aevf-1.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07d33b66739f0cc50d20dc90cbb2baba6352cba58e7baddeb6d0253ba48817a3
MD5 3809f4490294c0dcd00c7df3b3c3c71f
BLAKE2b-256 6e15260bc81c433531fc36b24f2cf775281509b6cad8c5b452fd0a2f7cdaa659

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