Skip to main content

AI agent governance - audit trails, policy enforcement, compliance

Project description

asqav

Python SDK for asqav.com. All ML-DSA cryptography runs server-side. Drop-in for AI agent governance: audit trails, policy enforcement, compliance.

Install

pip install asqav

Quick start

import asqav

asqav.init(api_key="sk_...")
agent = asqav.Agent.create("my-agent")
sig = agent.sign("api:call", {"model": "gpt-4"})

print(sig.verification_url)

Each signed action is recorded server-side with an ML-DSA-65 (FIPS 204) signature, a chain hash, and a public verification URL.

CLI

The package ships an asqav CLI mirroring the Python API. Set ASQAV_API_KEY and run:

asqav verify <signature_id> [--output json]   # IETF axes when present
asqav sign --agent-id ID --action-type T --action-json action.json \
           --compliance-mode --receipt-type protectmcp:decision \
           --risk-class high --issuer-id legal:Acme
asqav agents list / create / revoke
asqav sessions list / end
asqav replay <agent_id> <session_id>          # Pro
asqav replay-verify <agent_id> <session_id> [--strict]   # IETF chain
asqav preflight <agent_id> <action_type>      # Pro
asqav budget check / record                   # Pro
asqav approve <session_id> <entity_id>        # Pro
asqav compliance frameworks / export          # Business
asqav audit-pack export --start ISO --end ISO --output-file bundle.json
asqav audit-pack policy <sha256:hex>
asqav payloads erase <signature_id>           # P4: GDPR right-to-erasure
asqav org set-compliance-strict <org_id> --enable|--disable
asqav keys generate --algorithm ed25519|es256 [--out priv.pem]
asqav migrate run v3-20|v3-21|v3-22           # X-Maintenance-Key required
asqav policies / webhooks list / create / delete   # Pro

Pro and Business commands are gated client-side via GET /account so a free-tier key gets a clean upgrade message instead of a mid-pipeline 402.

The IETF Compliance Receipts profile commands (sign --compliance-mode, audit-pack export, audit-pack policy, payloads erase, replay-verify --strict, org set-compliance-strict) match the SDK kwargs on Agent.sign(...) and verify_compliance_receipt(...). See docs/CLI.md for full flag reference.

Roadmap

Six-line view of what is shipped on Asqav:

  • Hash-only mode for cloud - Today (default for *.asqav.com).
  • Self-hosted signer (split-trust) - Today.
  • Bring-your-own KMS (AWS KMS / GCP KMS) - Today, Enterprise tier.
  • Customer-owned storage - Today (self-hosted; relay payload allowlist enforced in code).
  • SCITT / COSE_Sign1 receipt export - Today (public GET /api/v1/signatures/{id}/cose returns application/cose).
  • Air-gapped / on-prem mode - Today (offline license + zero-egress, see docs/airgapped-mode.md in the backend repo).

See the docs at https://asqav.com/docs for the current feature set.

Standards

Asqav's compliance receipts are profiled in IETF Internet-Draft draft-marques-asqav-compliance-receipts, profiling the upstream draft-farley-acta-signed-receipts for EU AI Act Articles 12 and 26, and DORA Article 17 bindings.

Compliance receipts (IETF profile)

Pass compliance_mode=True to agent.sign(...) to emit a Compliance Receipt under draft-marques-asqav-compliance-receipts. The SDK fills action_ref automatically (sha256: over the JCS-canonical action object) so callers only need to supply policy-relevant context.

import asqav

asqav.init(api_key="sk_...")
agent = asqav.Agent.create("payments-agent")

sig = agent.sign(
    "payment.wire_transfer",
    {"amount_eur": 850000, "beneficiary_iban": "DE89370400440532013000"},
    compliance_mode=True,
    receipt_type="protectmcp:decision",
    risk_class="high",
    issuer_id="legal:Acme GmbH",
    iteration_id="task-2026-Q2-4821",
    sandbox_state="enabled",
)

print(sig.compliance_mode)        # True
print(sig.receipt_type)           # "protectmcp:decision"
print(sig.action_ref)             # "sha256:..."
print(sig.previous_receipt_hash)  # 64 hex; "0"*64 on the first record per agent

Local-side sanity checks (presence of REQUIRED fields, namespace, 300s skew bound, predecessor rederivation) are available as asqav.verify_compliance_receipt(envelope, predecessor_envelope=...). The cloud is the authoritative verifier; this helper is a convenience.

Algorithm agility per profile section 10.8 is exposed via asqav.SUPPORTED_ALGORITHMS. Pass algorithm="ed25519" or "es256" to Agent.create(...) for non-post-quantum identities, or asqav.generate_local_keypair("ed25519") for offline scenarios.

Documentation

License

MIT. Get an API key at asqav.com.

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

asqav-0.3.13.tar.gz (94.8 kB view details)

Uploaded Source

Built Distribution

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

asqav-0.3.13-py3-none-any.whl (112.4 kB view details)

Uploaded Python 3

File details

Details for the file asqav-0.3.13.tar.gz.

File metadata

  • Download URL: asqav-0.3.13.tar.gz
  • Upload date:
  • Size: 94.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asqav-0.3.13.tar.gz
Algorithm Hash digest
SHA256 35a1c7da7d5db90410cc7c3caa400947935636cb429554c3f800e4ef1d7cbf9a
MD5 554e3bfc9bf0c86a332d99632eb20ef6
BLAKE2b-256 a071eee1bd21ad19ae6160d8fb3925723879c2c716f77ad3dac38d743c2c85fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for asqav-0.3.13.tar.gz:

Publisher: publish.yml on jagmarques/asqav-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file asqav-0.3.13-py3-none-any.whl.

File metadata

  • Download URL: asqav-0.3.13-py3-none-any.whl
  • Upload date:
  • Size: 112.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asqav-0.3.13-py3-none-any.whl
Algorithm Hash digest
SHA256 6e1e6b08d73c88caff0b21213357357abcd25cce76a540a495b9a10b2387cdcf
MD5 003bc6f139b17a128105a9cf2f698008
BLAKE2b-256 22ebdd64f0165b77907b75ec1dc8f306c98aea680afbd54fed8f3c21d8a8dc2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for asqav-0.3.13-py3-none-any.whl:

Publisher: publish.yml on jagmarques/asqav-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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