Skip to content

CLI Reference

The Glacis CLI provides command-line tools for verifying attestation receipts. It is included automatically when you install the SDK.

Terminal window
pip install glacis

Verify a receipt file and check its cryptographic validity:

Terminal window
python -m glacis verify receipt.json

Flags:

FlagDefaultDescription
--base-urlhttps://api.glacis.ioAPI base URL for online verification

Example: specify a custom API endpoint:

Terminal window
python -m glacis verify receipt.json --base-url https://api.staging.glacis.io

Example output (valid online receipt):

Receipt: att_abc123def456...
Type: Online
Status: VALID
Signature: PASS
Merkle proof: PASS

Example output (valid offline receipt):

Receipt: oatt_xyz789...
Type: Offline
Status: VALID
Signature: PASS

Example output (invalid receipt):

Receipt: att_abc123...
Type: Online
Status: INVALID
Error: Signature verification failed

The CLI expects a JSON file containing the attestation object. You can produce this file by calling receipt.model_dump() in your code.

{
"id": "att_abc123...",
"operation_id": "550e8400-e29b-41d4-a716-446655440000",
"operation_sequence": 0,
"service_id": "my-service",
"operation_type": "inference",
"evidence_hash": "a1b2c3d4e5f6...",
"public_key": "ed25519pubkeyhex...",
"signature": "ed25519signaturehex...",
"timestamp": 1706886000000,
"is_offline": false
}
from glacis import Glacis
import json
import os
# Online mode
glacis = Glacis(api_key=os.environ["GLACIS_API_KEY"])
receipt = glacis.attest(
service_id="my-service",
operation_type="inference",
input={"prompt": "test"},
output={"response": "result"},
)
# Save to file
with open("receipt.json", "w") as f:
json.dump(receipt.model_dump(), f, indent=2, default=str)
# Verify from command line:
# python -m glacis verify receipt.json

For offline mode, make sure to include signing_seed:

from glacis import Glacis
import json
import os
glacis = Glacis(mode="offline", signing_seed=os.urandom(32))
receipt = glacis.attest(
service_id="dev-testing",
operation_type="inference",
input={"prompt": "test"},
output={"response": "result"},
)
with open("receipt.json", "w") as f:
json.dump(receipt.model_dump(), f, indent=2, default=str)
CodeMeaning
0Receipt is valid
1Receipt is invalid, verification failed, file not found, or invalid JSON
.github/workflows/verify.yml
- name: Verify attestation
run: |
python -m glacis verify receipt.json
if [ $? -ne 0 ]; then
echo "Attestation verification failed!"
exit 1
fi
#!/bin/bash
for receipt in receipts/*.json; do
echo "Verifying $receipt..."
python -m glacis verify "$receipt"
if [ $? -ne 0 ]; then
echo "FAILED: $receipt"
exit 1
fi
done
echo "All receipts verified!"