AGLedger SDK — Accountability and audit infrastructure for agentic systems.
Project description
AGLedger Python SDK
The official Python SDK for AGLedger — accountability infrastructure for AI agents. Self-hosted. The Layer 3 accountability layer of the agent stack.
Learn more
- agledger.ai — what AGLedger is and why Layer 3 accountability matters
- How it works — the four-endpoint lifecycle: Record, Completion, Verdict, fulfill
- Glossary — canonical definitions of Record, Completion, SCITT Receipt, Verdict, Settlement Signal
- Documentation — installation, integration guides, API reference
- Protocol (AOAP) — the coordination language behind AGLedger
Install
pip install agledger
Quick Start
import os
from agledger import AgledgerClient
client = AgledgerClient(
api_key=os.environ["AGLEDGER_API_KEY"],
base_url=os.environ["AGLEDGER_EXTERNAL_URL"], # your AGLedger instance URL
)
# Create a Record. An agent key defaults the principal to itself; an admin
# key names the principal explicitly via principal_agent_id.
record = client.records.create(
type="ACH-PROC-v1",
contract_version="1",
platform="internal",
performer_agent_id="agt-123",
criteria={"item_spec": "widgets", "quantity": {"target": 100}},
)
# Activate it
client.records.transition(record.id, "activate")
# Submit a completion
completion = client.completions.submit(
record.id,
evidence={"deliverable": "/out.pdf", "deliverable_type": "file_ref", "quantity_supplied": 95},
)
# Principal verdict
client.records.report_outcome(record.id, completion_id=completion.id, outcome="PASS")
Configuration
client = AgledgerClient(
api_key="agl_agt_...", # or set AGLEDGER_API_KEY env var
base_url="https://agledger.internal.example.com", # your instance URL
max_retries=2, # default: 2
timeout=30.0, # default: 30s
)
Async Support
from agledger import AsyncAgledgerClient
async with AsyncAgledgerClient() as client:
record = await client.records.get("rec-123")
Resources
records, completions (formerly receipts), verification, disputes,
webhooks, reputation, events, schemas, compliance, health, admin
(with admin.records + admin.vault sub-resources), a2a, agents, audit
(with audit.org_reads_checkpoints and audit.vault_checkpoints), auth,
capabilities, discovery, references, federation, federation_admin,
verification_keys, scitt (SCITT/SCRAPI entries + Transparency Service keys),
predicates (predicate schema discovery).
Offline Audit Export Verification
Verify a Record's hash-chained, Ed25519-signed audit export without calling the API:
from agledger.verify import verify_export
export_data = client.records.get_audit_export("rec-123")
result = verify_export(export_data.model_dump(by_alias=True))
if not result.valid:
print(f"Broken at position {result.broken_at.position}: {result.broken_at.reason}")
# VerifyExportResult(valid=True, verified_entries=12, total_entries=12, ...)
Requires cbor2 (for COSE_Sign1 decoding) and cryptography (for Ed25519
verification):
pip install 'agledger[verify]'
Rewritten in 0.8.0 to decode canonical COSE_Sign1 envelopes (RFC 9052), walk the
hash chain, and verify Ed25519 signatures. Format 2.0 (was 1.0 JCS + detached
Ed25519). Pass public_keys={...} to override the export's embedded keys, or
require_key_id="key-id" to reject exports signed by an unexpected key.
SCITT / SCRAPI
Register Signed Statements with the Transparency Service and retrieve Transparent Statements (Signed Statement + Receipt(s)):
receipt = client.scitt.entries.register(signed_statement)
# COSE_Sign1 Merkle inclusion proof per draft-ietf-cose-merkle-tree-proofs-18
transparent = client.scitt.entries.get(entry_id)
# Transparent Statement: Signed Statement with one or more Receipts embedded
keys = client.scitt.keys.list()
# COSE_KeySet of the Transparency Service's signing keys
Wire format is binary application/cose. Errors surface as RFC 9290 CBOR
problem-details on APIError.raw_body.
Predicate Schemas
Fetch the canonical JSON Schemas for each predicate kind (record-state, settlement-signal, vault-checkpoint, schema-event, org-read, counter-attestation, federation-projection):
kinds = client.predicates.list()
schema = client.predicates.get("settlement-signal")
Attestation Export
Pull a Record's chain as a tagged COSE_Sign1 stream or a sigstore-bundle v0.3.2 projection for Rekor / in-toto / sigstore-policy-controller ingest:
cose_sequence = client.records.get_attestation(record_id)
# application/cose-sequence bytes (tagged COSE_Sign1 stream)
bundle = client.records.get_attestation_bundle(record_id)
# sigstore-bundle v0.3.2 projection
Vault Checkpoints
Per-record signed Merkle anchors are emitted every 6 hours, letting an auditor detect audit-vault TRUNCATE / DELETE tampering offline:
checkpoints = client.audit.vault_checkpoints.list(record_id="rec-123")
Licensing
AGLedger is free for single-node deployments (Docker Compose with bundled database). An Enterprise License is required for external database connections, federation, and multi-node deployments.
Full details: agledger.ai/pricing | License Agreement
SDK License
Proprietary. Copyright (c) 2026 AGLedger LLC. All rights reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agledger-0.8.3.tar.gz.
File metadata
- Download URL: agledger-0.8.3.tar.gz
- Upload date:
- Size: 69.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1515074a94934883eb2e1aae29c6c4c91a8341ef2aad11b392b16e0521049046
|
|
| MD5 |
5c3ca4b30ebfd63d9d0f40c0fc096b5d
|
|
| BLAKE2b-256 |
f6f4b5f23697fda6fd0582665a6c4f4e0220121fc0805146ff7a3c39c49a3576
|
File details
Details for the file agledger-0.8.3-py3-none-any.whl.
File metadata
- Download URL: agledger-0.8.3-py3-none-any.whl
- Upload date:
- Size: 63.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd7d6bc86873a9a3e1f3370ab0f2651c26b296e823a2cd3762c99fac30136e3a
|
|
| MD5 |
210cb6d38dd4dfebc534507b9b900513
|
|
| BLAKE2b-256 |
5651deb8118176b9a9c5d8e7f036b873a17da4f8be36e3b3d7657c6e56fc12eb
|