Skip to main content

Seal

aqta-verify-receipt

PyPI npm Licence

Offline verifier for Seal receipts (ATTESTATION-v1).

Seal signs the model call at runtime. This package checks that signature without contacting Aqta. No account. Same algorithm as the npm package.

30-second check

pip install aqta-verify-receipt
aqta-verify-receipt receipt.json \
  --key 9Y3Eiq6V8QjRDUM5nPqSwKIOPQaoEU4SbagfYFdvWa4

Default output is one compact line (words carry meaning; colour is optional):

✓ valid  ALLOWED  2d41…871e94c  pinned issuer key

Invalid:

✕ invalid  signature mismatch  2d41…871e94c

Optional flourish (never the proof):

aqta-verify-receipt receipt.json --key <pinned> --pretty
# … seal intact · verified offline

Or pipe:

curl -sS https://api.aqta.ai/r/YOUR_RECEIPT_ID | aqta-verify-receipt - \
  --key 9Y3Eiq6V8QjRDUM5nPqSwKIOPQaoEU4SbagfYFdvWa4
Exit Meaning
0 valid
1 invalid
2 usage / IO

Current production key id: aqta-att-01269bb4b6a7d950 (/v1/attestation/public-key).

Pin that string; do not re-fetch it inside a verify loop. Keys rotate and receipts do not: a receipt verifies against the key current when it was signed, and the permanent key record (with retired keys and their validity windows) is at app.aqta.ai/security/issuer-keys.txt.

Library

from aqta_verify_receipt import verify_receipt, fetch_published_public_key

# Once per environment: fetch, then pin somewhere you control.
trusted = fetch_published_public_key()

result = verify_receipt(receipt, trusted_public_key=trusted)
if not result.valid:
    raise ValueError(result.reason)

CLI

aqta-verify-receipt <file|-> --key <base64url> [--no-strict] [--json] [--pretty] [-q]
aqta-verify-receipt <file|-> --integrity-only [--no-strict] [--json] [--pretty] [-q]
Flag Meaning
--key Pin issuer identity (required for counsel-grade).
--integrity-only Signature vs embedded key only; returns untrusted. Anyone can self-sign.
--no-strict Allow unknown top-level fields
--json One JSON object on stdout
--pretty Optional human flourish after the compact line (not the proof)
-q Silent; exit code only

NO_COLOR=1 disables colour. Meaning never depends on colour alone.

Pinning is required by default. Without --key, pass --integrity-only (embedded key only; anyone can self-sign; result is marked untrusted).

Dependencies

cryptography (>= 42) for constant-time Ed25519. Nothing else.

What this is not

Not a governance dashboard. Not a cost router. A small verifier for one signed model-call receipt. The novel part is the receipt format and offline verification model, not ASCII theatre.

Licence

Apache-2.0. Aqta Technologies Limited.

If you implement or cite the ATTESTATION-v1 format itself, credit under CC-BY-4.0: see the repo CITATION.cff.

Download files

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

Source Distribution

aqta_verify_receipt-1.1.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

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

aqta_verify_receipt-1.1.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aqta_verify_receipt-1.1.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for aqta_verify_receipt-1.1.0.tar.gz
Algorithm Hash digest
SHA256 65b9d150eada2c9f7d0b9dc03d8045d50d086f8a117c3eb128c5670805a2dfd4
MD5 bd76b78757b9a79befaca929c5a7eb2c
BLAKE2b-256 09f2e0f4f7ddcf3ba0663595bcabbd1806e594cde60088859c097accd2f42cb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aqta_verify_receipt-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 137de41d70b11c0338ea0798736315ed8414323c1471ed3bbd37021e0d959ff3
MD5 9c8722b446e647df2af97b9e5733f948
BLAKE2b-256 b8f7a88b16c79c3364529d4743f81b99cef459ac3e9ca9d81c6d4ddcf1a2131c

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.1

2 files

This release

1.1.0 This release

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

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