1. Install
# requires Python 3.11+
pip install verdra-record
// requires Node 20+ npm install @verdra/record // or: pnpm add @verdra/record · bun add @verdra/record
2. Quickstart — Python
Wrap any agent action with @record.capture(...). The SDK reads the runtime configuration at the call site, runs the four-strata capture, signs the package with your customer-held key, and writes it to your storage.
from verdra_record import Record from langgraph.graph import StateGraph # client-held keys + customer-controlled storage record = Record( principal="Orion Treasury Corp.", storage="s3://orion-evidence/verdra/", kms="aws-kms://arn:aws:kms:us-east-1:111111111111:key/orion-record", schema_version="v0.1", ) @record.capture(strata=["a", "b", "c", "d"]) def issue_payment(graph: StateGraph, mandate: dict) -> dict: # your existing agent logic — unchanged return graph.invoke(mandate) # every call now produces a signed Evidence Package in your bucket result = issue_payment(graph, mandate={"to": "vendr-fulfill-2", "amount": "1847.20 USDC"})
3. Quickstart — TypeScript
import { Record } from "@verdra/record"; import { Agent, tool } from "@openai/agents"; const record = new Record({ principal: "Orion Treasury Corp.", storage: "s3://orion-evidence/verdra/", kms: "aws-kms://arn:aws:kms:us-east-1:111111111111:key/orion-record", schemaVersion: "v0.1", }); const issuePayment = record.capture(async (mandate) => { const agent = new Agent({ name: "orion-procure-7" }); return await agent.run(mandate); }); // every call produces a signed Evidence Package in your bucket await issuePayment({ to: "vendr-fulfill-2", amount: "1847.20 USDC" });
4. Runtime adapters
First-class adapters at preview release. Custom runtimes integrate via the low-level capture() hook.
5. Evidence Package shape
Every captured action produces an Evidence Package conforming to the public Verdra Rules schema. Top-level fields:
| Field | Type | Description |
|---|---|---|
| id | string | Content-addressed identifier (BLAKE3-256 of the canonical-serialized package). |
| schema | string | Schema version pin, e.g. verdra/v0.1. |
| strata.a | object | Transaction stratum: counterparty, payload, rail, reference, timestamp. |
| strata.b | object | Configuration stratum: prompt hash, tool inventory, model + version, spend caps at dispatch. |
| strata.c | object | Behavior stratum: counterfactual decision trace, tool calls, latencies. |
| strata.d | object | Capability stratum: signed delegation reference, scope, expiry. |
| signature | object | Customer Ed25519 signature over the canonical hash. KMS key reference, no private material. |
| timestamp | object | RFC 3161 timestamp token from an external authority. TSA URL and token bytes. |
| storage | object | Customer-controlled storage URI. Verdra has no write path. |
6. Verifying a package
from verdra_record.verify import verify_package # adjudicators, counsel, auditors, or counterparties can verify # offline using only the public schema and the customer's pubkey. result = verify_package( package_path="./EP-2026-0424-A23F.ep.json", pubkey="ed25519:BqV7…X2", tsa_root="./tsa-root.crt", ) assert result.signature_valid assert result.timestamp_valid assert result.content_address_matches
7. What the SDK does not do
- It does not change agent behavior. Capture is read-side; agent logic returns its normal value.
- It does not phone home with package contents. Packages stay in customer storage.
- It does not require a Verdra account at runtime. Verification is offline against the public schema.
- It does not couple to a specific DR venue. The same package routes to counsel, an insurer, a payment network, or any compliant DR forum.
Get early access
The Record SDK is in preview release with named design partners. If you run agents that transact and want to evaluate the SDK against your runtime, write to the engineering team. Standard onboarding includes a 30-45 day instrumented pilot, a security review packet, and a Data Processing Agreement template.
Request SDK access →