How AGLedger Works
AGLedger is change control built for agents, and this page is the mechanism underneath. Plug it in and three services carry every change an agent makes. Notarize: each step is recorded the moment it happens: signed, hash-chained, and impossible to alter later. Gate: the changes that matter wait for a verdict after the work or an approval before it, on your terms. Notify: the systems and people around the work hear each outcome the instant it lands. This page is the mechanics of all three.
The mechanism underneath is one signed, hash-chained record spanning the full lifecycle of a piece of work: intent and authority at the start, delegation handoffs in between, the result at the end, the verdict when gated. Each stage is captured the moment it is real. The agent reports with its key; the notary signs what it reported and names the accountable principal inside the signed payload. The agent holds no keys and assembles no proof. The authority is the principal's, the signature is the notary's.
Three services produce that record. Notarize signs and chains what was intended and done: one API call, terminal at create, the default path; signed intent lives here. The Gate adds an explicit accept-or-reject from a principal when work crosses a delegation boundary. Notify pushes each record event out to the systems and people around the work. The Gate and Notify together are the coordination. All three sit on the same Server and share the same chain.
Notarize · Gate · Notify · Delegation · Federation · Settlement Signals · Schemas · Integrations
Last updated: 2026-06-25 · API v1.3.2
The shape
One record, extended in four layers
Notarize is the spine. Delegation, federation, and federated gates are the same signed record extended across handoffs and across organizations - turn on what the work needs, leave the rest off.
Service 1 · the default path
Notarize - sign and chain at the moment of writing
An agent calls POST /v1/records with a structured statement of what it did or is doing - the action, the inputs, any trace IDs and join keys you want carried inside the signed envelope. AGLedger validates the payload against the contract type schema, signs it Ed25519, hash-chains it to the previous entry, and writes it to the vault. For a notarize-only contract type the record terminates at RECORDED in the same call. One Signed Statement, one chain position, one network round-trip.
The chain is signed intent - memory the agent cannot lose. When a new agent picks up where the old one left off - after a context reset, a session expiry, a handoff, a tool swap - it reads the chain to recover what was signed for. Not a summary of a conversation that no longer exists. The byte-stable record of what was intended and done.
Every record is verifiable offline against published public keys at /.well-known/agledger-vault-keys.json. The vault rejects UPDATE and DELETE; partition-level TRUNCATE is blocked by trigger. Tampering is mathematically detectable.
POST /v1/records → chain position N, signed, RECORDED
GET /v1/records/{id}/audit-export → Signed Statement, verifiable offline
GET /.well-known/agledger-vault-keys.json → public keys for offline verify
Service 2 · the delegation boundary
Gate - principal renders accept or reject
When work crosses a delegation boundary - between agents, between departments, between companies - the principal needs a place to render accept or reject on the performer's delivery. AGLedger holds the signed contract, the signed completion, the signed verdict, and the structured dispute path. We are the interface, not the judge. The principal renders the judgment; the chain records it.
The principal can be a human in a dashboard, an automated agent rendering accept or reject against its own logic, or a rules engine evaluating numeric criteria with tolerance bands. AGLedger does not distinguish among them - the verdict is signed either way, and the record names which principal rendered it. The rules engine is a convenience layer for deterministic checks; the principal remains the real judge.
1. Principal creates the record
Structured statement of what is being assigned, by when, under what criteria, with which tolerance bands.
POST /v1/records2. Performer accepts and activates
Counter-proposals are supported on the same flow if terms need to change before work begins.
POST /v1/records/{id}/accept3. Performer submits a completion
Structured evidence matching the contract type's completion schema, signed by the performer.
POST /v1/records/{id}/completions4. Principal renders the verdict
The record terminates at FULFILLED on accept or FAILED on reject. A Settlement Signal fires.
POST /v1/records/{id}/verdictDisputes are first-class. A three-tier path covers automated re-adjudication on rules-mode verdicts, a structured evidence window for both parties, and a final arbitration tier that terminates at PENDING_ARBITRATION rather than fabricating a verdict. The notary remembers; the contractually agreed arbiter judges.
Service 3 · keeping everyone in the loop
Notify - signed event delivery the receiver can verify
Register an endpoint with POST /v1/webhooks and AGLedger pushes every business-meaningful record event to the systems and people you already run - an approval queue, a dashboard, an ERP, a payment platform. Human-in-the-loop by delivery, not by polling. The subscription is durable: at-least-once delivery with a stable idempotency key, retry with backoff, a circuit breaker, and a seven-day dead-letter queue.
Every delivery is signed so the receiver can verify origin, not just integrity. HMAC by default; Ed25519 (RFC 9421) for the non-repudiable path that Settlement Signals ride - verifiable against the same published keys that sign the chain, with no shared secret.
POST /v1/webhooks → register a subscription with an event filter
POST /v1/webhooks/{id}/ping → send a test event before you wire it up
GET /v1/webhooks/{id}/deliveries → per-attempt delivery log
On the chain
What gets written to the chain
Every state transition produces a Signed Statement - a tagged COSE_Sign1 envelope (RFC 9052, tag 18) over an in-toto v1 Statement payload, deterministically CBOR-encoded per RFC 8949 §4.2.1, Ed25519-signed by the Server instance, and hash-chained. The accountable principal and the acting credential are named inside that signed payload, so the signature covers who is accountable. The database enforces immutability: UPDATE and DELETE are revoked on the vault tables, and partition-level TRUNCATE is blocked by trigger. Privileged-DBA tampering of the visible payload jsonb is caught at verify time as chainIntegrityReason: 'payload_drift'.
Public verification keys at /.well-known/agledger-vault-keys.json - verify the chain offline, no account needed.
Who reads it later
One record, three readers
The same signed record is read later by three different parties, each getting something different from it - which is why one record is worth signing properly.
Where it runs
Self-hosted, one role, your keys
AGLedger runs on your infrastructure. PostgreSQL 17+ (18 recommended for native UUIDv7), Node 24 LTS, Kubernetes 1.27+ for the Enterprise shape. Every install is the same binary - one role: Server. A Server with federation off and gating off is the same install as one with both on; only configuration changes.
No phone-home, no telemetry call, no kill switch. If the license lapses, the software keeps running. Security patches are free regardless of support status. Air-gap capable. Docker Compose for the Developer Edition; Helm chart on EKS/ALB/ACM (or your equivalent) for Enterprise.
Explore
Put the record in the path of a consequential action - no record, no action - or keep it beside the work as the on-ramp.
The Gate in depth - how principals render verdicts and what makes the verdict itself a signed object.
How accountability crosses an organizational boundary while the underlying business data stays on each side.
The terminal-state signal - SETTLE, HOLD, RELEASE - that authorizes downstream payment or contract systems.
Customer-defined contract types and predicate kinds - the structural input the Gate evaluates against.
The cryptographic architecture that underwrites every record, verdict, and federation message.
The 193-route HTTP surface every SDK, MCP tool, and federation peer talks to.
Fit AGLedger under the platforms you already run - trace IDs ride inside the signed envelope; OCSF exports drop into your SIEM.
Tested workflow templates - import an industry recipe and adapt its records, gates, and systems of record to your own.
Developer Edition - free, production-capable, starts in one command.