CLI — Offline ERF verifier
Verify records locally. No network. No trust assumptions.
The Vraimony CLI is a Python script that verifies two things about any sealed ERF record: the SHA-256 content hash matches the file, and the ed25519 server signature is valid. Runs entirely offline. No network calls required.
Python 3.7+
Offline-first
SHA-256 + ed25519
No network calls
SHA-256: dbfcde8e2ceff5692be1cf1051e7b3e205ea9498f70fd121a187ff29029e3c89
What it verifies
Two checks. Both required for a trusted record.
1. Content hash
Computes SHA-256 of the file on disk. Compares against receipt.payload.content_hash.value. If they match: the file has not been modified since the record was sealed.
2. Server signature
Verifies the ed25519 signature in receipt.signature using the embedded public key. If valid: the receipt was produced by the Vraimony server and has not been tampered with.
Usage
One command. Two results.
python3 vraimony_verify.py --file document.pdf --receipt receipt.json
python3 vraimony_verify.py --file document.pdf --receipt receipt.json --verify-anchor
python3 vraimony_verify.py --file document.pdf --receipt receipt.json --verbose
Vraimony v4.5.6.1 — Offline verification
Receipt ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Seal code: L2_STANDARD
Hash match: YES
Signature: VALID
Vraimony v4.5.6.1 — Offline verification
Receipt ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Hash match: NO
Signature: INVALID
Exit codes: 0 = both checks pass. 1 = one or more checks fail. 2 = invalid receipt format.
Install
Python 3.7+ with one dependency.
pip install cryptography
unzip vraimony-cli.zip
python3 vraimony_verify.py --file your_file.pdf --receipt receipt.json
The script uses only Python standard library + cryptography package. No other dependencies. No network calls at runtime.
--verify-anchor — independent timestamp verification
Verify the timestamp commitment without any server calls.
The --verify-anchor flag recomputes the timestamp anchor commitment from the receipt fields and checks it matches timestamp_anchor.commitment_hex. This is the third verification layer — independent of both the file hash and the signature.
python3 vraimony_verify.py --file cargo-record.pdf --receipt receipt.json --verify-anchor
✓ HASH SHA-256 match — file unchanged since sealing
✓ SIGNATURE ed25519 valid — receipt is authentic
✓ ANCHOR commitment verified — 2026-03-25T10:00:00.000Z
✓ VERDICT SEALED · score=91/100
LAYERS structural=100 integrity=100 policy=90 readiness=80
EVIDENCE 3 items · PASS=2 · Declared=1 · Unverified=0
OTS Submit to opentimestamps.org for Bitcoin anchoring (optional)
URL https://ots.opentimestamps.org/timestamp
The anchor commitment can also be submitted to opentimestamps.org for Bitcoin-level external anchoring at zero cost. This step is optional — the commitment is independently verifiable without it.
--verbose — evidence degree report
See PASS/Declared/Unverified with degree labels per item.
python3 vraimony_verify.py --receipt receipt.json --verbose
Evidence items (3):
[PASS] Bill of Lading degree=9 confidence=95 anchored=true
[Declared] Commercial Invoice degree=5 confidence=80
[Unverified] Signed change order degree=2 (missing value)
Overclaims: 0 Quality stops: passed
When to use CLI vs verify.vraimony.com
Both verify the same thing. Different contexts.
Use CLI when:
- You need verification in an air-gapped environment
- You are automating checks in a CI/CD pipeline
- You need programmatic exit codes for scripts
- You want to verify without opening a browser
Use verify.vraimony.com when:
- You are a reviewer checking a record you received
- You want to see the full reviewer-facing record
- You want to ACK, MER, or download
- You need the human-readable review path