LoopGrid Verify
Standalone offline verification for LoopGrid evidence bundles.
loopgrid-verify verifies exported LoopGrid evidence without connecting to a LoopGrid server. It is designed for design partners, reviewers, auditors, operators, and engineering teams that want to inspect a portable evidence bundle independently of the running LoopGrid service.
Current package: 0.1.0 design preview
Install
pip install loopgrid-verify
Python 3.10–3.13 is supported.
Verify a bundle
loopgrid-verify evidence.zip
For higher-assurance verification, pin signer identity using an out-of-band trusted public key:
loopgrid-verify evidence.zip \
--trusted-public-key trusted-public-key.pem
Or pin the expected LoopGrid signer key ID:
loopgrid-verify evidence.zip \
--expected-key-id ed25519:0123456789abcdef
For an RFC3161 timestamp token, the verifier validates the timestamp status, SHA-256 message imprint, and imprint match locally. To additionally validate the timestamp signer certificate chain, provide a trusted CA bundle and ensure openssl is available:
loopgrid-verify evidence.zip \
--tsa-ca-file tsa-ca.pem
Verification result
A valid attested bundle prints:
LOOPGRID EVIDENCE VERIFICATION
[OK] VERIFIED
A modified or otherwise invalid bundle prints:
LOOPGRID EVIDENCE VERIFICATION
[FAIL] INVALID
and exits with status code 2.
Legacy Evidence Bundle v2 exports created before signed file attestation remain ledger-verifiable. They are explicitly labeled:
[OK] LEDGER VERIFIED
[WARN] Legacy/unattested bundle: exported file bytes are not covered by a signed bundle attestation.
What is verified
For current attested Evidence Bundle v2 exports, the verifier checks:
- the signed bundle-attestation digest;
- the attestation signature;
- SHA-256 digests for attested exported files;
- missing, duplicate, and unexpected archive entries;
- the embedded signer key identity;
- optional out-of-band public-key or key-ID pinning;
- signed event content hashes and signatures;
- workspace hash-chain continuity across events and proof-only witnesses;
- disclosed payload commitments when disclosures are included;
- policy digest consistency;
- lifecycle and verification-document consistency;
- checkpoint signatures and linkage when present;
- RFC3161 timestamp imprint validity when present;
- optional RFC3161 signer certificate-chain trust when
--tsa-ca-fileis supplied.
Trust model
The public key embedded in an evidence bundle proves that the bundle is internally consistent under that key. It does not, by itself, establish who controls that key.
When signer authenticity matters, pin trust out of band using:
--trusted-public-key
or:
--expected-key-id
This distinction is intentional: bundle integrity and signer authenticity are separate questions.
Python API
from loopgrid_verify import verify_bundle
result = verify_bundle(
"evidence.zip",
trusted_public_key="trusted-public-key.pem",
)
if result["valid"]:
print("verified")
else:
print(result["failures"])
The API is:
verify_bundle(
path,
tsa_ca_file=None,
expected_key_id=None,
trusted_public_key=None,
) -> dict
What this verifier does not determine
loopgrid-verify checks cryptographic and structural evidence properties. It does not determine whether an AI decision was correct, safe, fair, lawful, compliant, or otherwise appropriate. It is evidence-verification infrastructure, not a legal or regulatory compliance determination.
Server-independent by design
Verification does not require:
- a LoopGrid server;
- a database;
- Docker;
- an API key;
- an MCP server;
- a network connection.
The only optional external executable is openssl, and only when certificate-chain trust validation is requested for an RFC3161 timestamp using --tsa-ca-file.
Development
python -m venv .venv
Windows PowerShell:
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e ".[dev]"
python -m pytest -q
python scripts/release_check.py
macOS/Linux:
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e ".[dev]"
python -m pytest -q
python scripts/release_check.py
Build:
python -m build
python -m twine check dist/*
Fixture coverage
The test suite includes:
- a current signed-file-attested Evidence Bundle v2;
- the same bundle with
report.htmlmodified; - a legacy/unattested Evidence Bundle v2;
- the correct trusted public key;
- a deliberately incorrect trusted public key.
The tampered bundle must fail verification. The legacy bundle may pass signed-ledger verification only with the explicit legacy_unattested status/warning.
Release posture
0.1.0 is a design-preview verifier release. The package is intended for technical evaluation and design-partner workflows. It is not a legal-compliance certification tool.
Related projects
- LoopGrid core:
https://github.com/cybertechsoft/loopgrid - LoopGrid MCP:
https://github.com/loopgridio/loopgrid-mcp - Website:
https://loopgrid.io
License
Apache-2.0. See LICENSE.
Release files for loopgrid-verify 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| loopgrid_verify-0.1.0.tar.gz | 41.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| loopgrid_verify-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.1 kB
Release files / loopgrid_verify-0.1.0.tar.gz
| Download URL | loopgrid_verify-0.1.0.tar.gz |
|---|---|
| Size | 41.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b48c7eb2f4a80c8c3ef9539578f7f03f0d7a56baedea225938db1b92c3be4e2
|
|
BLAKE2b-256 checksum How to use checksums |
c517babd6867ad9b43c81b6060bd5a343313e11f70510722ade9db5f817b2100
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency logRelease files / loopgrid_verify-0.1.0-py3-none-any.whl
| Download URL | loopgrid_verify-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e3cb7a63897dc43f7fc853b6638ae333009e21075a7dd99bfc2feb2b6d92195
|
|
BLAKE2b-256 checksum How to use checksums |
ef453a70c06945dd9c9047f3edae151c4edf61ecaa4c53cb468d3842abecc522
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency log