Skip to main content

agent-seal

Agent Seal Registry Verify agents PyPI

Give your AI agent a signed, verifiable identity in one line.

agent-seal registers your AI agent with the Agent Seal Registry — a court-grade, cryptographic identity system for autonomous agents. Keys are generated locally and never leave your machine; the registry only ever sees public keys and signatures.

Quick start

from agent_seal_xyz import seal

agent = seal(
    name="my-agent",
    architect="you@email.com",
    capabilities=["code-review"],
)
print(agent.sijil, agent.seal_url)

That's it. Your agent now has a public, cryptographically verifiable identity.

Install

pip install agent-seal-xyz

CLI

# Register
agent-seal register --name my-agent --architect you@email.com --capabilities code-review,pr-analysis

# Check status
agent-seal status <agent-id>

# Verify seal and card
agent-seal verify <agent-id>

# Attestation heartbeat — prove the agent is still the sealed agent
agent-seal attest --name my-agent --every 3600

# Check an action against a warrant *before* it runs (the gatekeeper)
agent-seal enforce --warrant chain.json --action "send payment from acct:acme/checking"

# Verify a signed decision receipt offline
agent-seal receipt verify receipt.json --trusted-key <hex>

API

seal(name, architect, capabilities=None, *, model="unknown", private_key=None)

Registers an agent and returns an AgentRegistration object.

Attribute Type Description
agent.sijil int Sijil number in the registry
agent.seal_url str URL to the agent's SVG seal
agent.badge_url str URL to the embeddable badge
agent.verify_url str URL to verify the seal
agent.agent_id str UUID in the registry
agent.public_key str Hex-encoded Ed25519 public key
agent.manifest_hash str SHA-256 hash of the covenant

AgentSealClient(registry_url="https://agent-seal.xyz")

Lower-level client with register(), status(), verify(), and attest() methods.

AgentSealClient.attest(...) — Drift Monitoring

Sends a signed agent:attest heartbeat carrying the DNA sequence recomputed from the covenant stored at registration (~/.agent-seal/covenants/). The registry compares it to the sealed baseline and reports drift.

from agent_seal_xyz import AgentSealClient

client = AgentSealClient()
result = client.attest(name="my-agent")
print(result["drift"]["decision"]["status"])   # healthy | authorized-evolution | unauthorized-drift
print(result["state"]["attestation"]["health"]) # fresh | drifted | ...

Keyword arguments: agent_id, name, covenant_path, private_key — one of the first three is required. Health is public at GET /v1/public/agents/{id}/status → attestation.health.

Warrant Chains, Runtime Enforcement & Decision Receipts

Beyond identity, the SDK ships an offline authority layer — power-of-attorney as code. A keeper issues a signed warrant delegating a scoped set of capabilities to an agent; the agent can attenuate (never widen) that scope down the chain. Every check is pure and offline — no network, no shared secret.

from agent_seal_xyz import (
    issue_warrant, verify_chain,
    enforce_action, enforce_and_receipt, verify_receipt,
)

# 1. A keeper delegates a scoped, time-boxed warrant to an agent
result = issue_warrant(
    issuer={"id": "keeper:acme", "type": "keeper", "publicKey": keeper_pub},
    subject={"id": "agent:seal-1", "type": "agent", "publicKey": agent_pub},
    scope={"capabilities": ["payments.send"], "resources": ["acct:acme/*"]},
    not_after=not_after_iso,
    issuer_private_key=keeper_private_key,
)
chain = result["chain"]
verify_chain(chain).valid  # -> True

# 2. Gate an action *before* it runs
action = {"capability": "payments.send", "resource": "acct:acme/checking"}
decision = enforce_action(chain, action)
decision.allowed  # -> True   (False + code 'resource-out-of-scope' if outside the grant)

# 3. Mint a non-repudiable, signed proof of the decision
decision, receipt = enforce_and_receipt(
    chain, action, signing_key=enforcer_private_key, enforcer_id="gw:1",
)
verify_receipt(receipt, trusted_keys=[enforcer_pub]).valid  # -> True

enforce_action returns an EnforceDecision with .allowed, .code, .reason, and a full per-gate audit trail in .checks. Warrants support capability + resource scoping, spend budgets, caveats, expiry, and revocation cascades. Decision receipts are Ed25519-signed and verify offline against a trusted-key set.

Key management

On first use, agent-seal generates an Ed25519 keypair and stores it at:

~/.agent-seal/keys/private.hex   (mode 0600)
~/.agent-seal/keys/public.hex    (mode 0600)

The private key never leaves your machine. To re-use an existing identity across environments (e.g., CI), pass private_key= as a hex string.

Error handling

from agent_seal_xyz import seal, AgentSealError, RateLimitError

try:
    agent = seal(name="my-agent", architect="you@email.com")
except RateLimitError as e:
    print(f"Rate limited. Retry in {e.retry_after}s.")
except AgentSealError as e:
    print(f"Registration failed: {e}")

Rate-limited requests (HTTP 429) are retried automatically up to 3 times, respecting the Retry-After header.

What is Agent Seal?

Agent Seal is a public registry that gives AI agents cryptographic, human-accountable identities. Every registered agent receives a Sijil number, a signed covenant, and a public seal — verifiable by anyone at agent-seal.xyz/verifier.

Built for the EU AI Act era: immutable audit trail, liability anchors, and EU AI Act readiness evidence out of the box.


agent-seal.xyz · Verify an agent · Registry API

Metadata

Release files for agent-seal-xyz 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-seal-xyz 0.3.0
File Size Uploaded Provenance
agent_seal_xyz-0.3.0.tar.gz 30.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-seal-xyz 0.3.0
File Interpreter ABI Platform
agent_seal_xyz-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.1 kB

Release files / agent_seal_xyz-0.3.0.tar.gz

Download URL agent_seal_xyz-0.3.0.tar.gz
Size 30.7 kB
Tags Source
SHA-256 checksum
How to use checksums
aced5a5438715186b638619f68fbb96a0239566aac6c81a7817a996bec1ae77c
BLAKE2b-256 checksum
How to use checksums
31bed5fea574b4cd98cae0d5fc99d38c9b31ea97e42419ce0f239f110156e9f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / agent_seal_xyz-0.3.0-py3-none-any.whl

Download URL agent_seal_xyz-0.3.0-py3-none-any.whl
Size 30.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
108d3079598dd7d67fe733be051ef954a977fe3efbab53212bbc4438116398da
BLAKE2b-256 checksum
How to use checksums
f44dc71ca72e1c5401b1b0f6ff17df455d2556a8908250abb6e09110ff77d51b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for agent-seal-xyz 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page