Skip to main content

Immutable continuity receipts for evolving AI systems. Offline cryptographic primitive — Ed25519 + canonical JSON, no network required.

Project description

crovia-seal

Immutable continuity receipts for evolving AI systems.

Tiny, offline, cryptographic primitive. Sign any JSON payload, get a verifiable receipt. No network call required.

Byte-identical with the JavaScript SDK @crovia/seal — receipts produced in either language verify in both.

Install

pip install crovia-seal

To enable the optional public-substrate register() call:

pip install "crovia-seal[register]"

Use

from crovia_seal import seal, verify, generate_key

key = generate_key()

# Sign any JSON payload.
receipt = seal(
    {"model": "gpt-4o", "output": "Hello, world."},
    key=key,
)

# Verify with the original payload (full check).
result = verify(receipt, {"model": "gpt-4o", "output": "Hello, world."})
print(result.valid)  # True

What you get

  • Cryptographic signature — Ed25519, byte-identical with the JavaScript SDK.
  • Stable receipt idcr_YYYY_<26 base32>, collision-resistant.
  • Continuity — chain receipts via prev_receipt to get an immutable lineage.
  • Offline by default — no network. Works in CI, behind firewalls, in isolated envs.
  • Public continuity graph — opt-in via register(receipt) to publish to the Crovia substrate.

Continuity chain

r1 = seal({"version": 1, "content": "..."}, key=key)
r2 = seal({"version": 2, "content": "..."}, key=key, prev_receipt=r1)
r3 = seal({"version": 3, "content": "..."}, key=key, prev_receipt=r2)

from crovia_seal import verify_chain
result = verify_chain([r1, r2, r3])

Optional: publish to the substrate

from crovia_seal import register

ack = register(receipt)  # POSTs to https://croviatrust.com/api/anchor
print(ack.accepted, ack.anchor_id)

This is the only call that touches the network. seal() and verify() never do.

Receipt format (crovia.receipt.v1)

{
  "v": "crovia.receipt.v1",
  "id": "cr_2026_AB23CD45EF67GH89IJ012KLMN3",
  "issued_at": "2026-05-07T15:43:57.123Z",
  "payload_hash": "sha256:<64 hex>",
  "payload_alg": "sha256",
  "prev": null,
  "seq": 0,
  "signer": "<64 hex Ed25519 pubkey>",
  "sig_alg": "ed25519",
  "canon": "csc-1",
  "domain": "CROVIA-RECEIPT-v1",
  "sig": "<128 hex Ed25519 signature>"
}

The signature covers b"CROVIA-RECEIPT-v1\n" || csc1(receipt without sig).

License

Apache-2.0.

Spec & reference impls

Project details


Download files

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

Source Distribution

crovia_seal-0.1.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

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

crovia_seal-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file crovia_seal-0.1.0.tar.gz.

File metadata

  • Download URL: crovia_seal-0.1.0.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for crovia_seal-0.1.0.tar.gz
Algorithm Hash digest
SHA256 161e76c9b61a88ef42369c58612fbb2087161d28c13eff21421c1aa2ff2e6571
MD5 7d3eefb8e40ff63128a217595435b1f8
BLAKE2b-256 094a3fb2dbc1bbf80a985cbf5b1c6412475633fefc0ca8009ea7ad5e91f0ed27

See more details on using hashes here.

File details

Details for the file crovia_seal-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: crovia_seal-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for crovia_seal-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91c1154401e46d9be0bb7309781d95f601cdc7eadc8ca9548aac6f7e163e40b1
MD5 082ddca7c671bceef9f1c7ddac805eb3
BLAKE2b-256 073504642a73e992bb00297fb3376715c97974fe2ad28028c4d29a723c893907

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 Pingdom Monitoring Sentry Error logging StatusPage Status page