The audit ledger
Every action — permitted or blocked — writes an entry. Each entry’s hash covers the full payload plus the previous entry’s hash, so the ledger forms a chain that cannot be silently tampered with: altering any entry breaks every hash after it.
What an entry contains
Section titled “What an entry contains”| Field | Description |
|---|---|
session_id |
Agent DNA ID (sender) |
classified_act |
Action type (ACTION_PAYMENT_INITIATE, ACTION_AGENT_MESSAGE, etc.) |
resource |
Target resource or agent |
status |
SUCCESS · BLOCKED_POLICY · FAILED_RUNTIME · PENDING_CONFIRMATION |
raw_intent |
Original intent string or JSON payload |
error |
Reason for block/failure (empty on success) |
prev_hash |
SHA-256 of previous entry (chain link) |
hash |
SHA-256 of this entry |
Verifying the chain
Section titled “Verifying the chain”Verify the full chain at any time:
curl -H "X-Imara-Token: $TOKEN" http://localhost:7070/ledger/verifyRelated surfaces:
| Method | Path | Description |
|---|---|---|
GET |
/ledger |
Query entries (limit, offset, status, session) |
GET |
/ledger/chain-head |
Current chain head hash |
GET |
/ledger/stream |
SSE real-time stream |
GET |
/ledger/mesh |
Agent-to-agent traffic graph (window=1h|6h|24h|7d|all) |
Getting the audit trail out
Section titled “Getting the audit trail out”The ledger is designed so regulators and SIEMs never depend on the box it was written on:
- Cloud WORM replication — push-only replica to S3 / GCS / Azure / MinIO with Object Lock (SEC 17a-4(f) posture). Regulators read the bucket directly with read-only credentials; the kernel is not in the loop. Optionally routed through Kafka/RedPanda with the
audit-consumerbinary doing the final WORM write. - Snapshots — periodic compressed (zstd) BoltDB backups through a crash-safe staging area to S3, with optional AES-256-GCM encryption.
- Webhooks — POST every commit (filterable by status) to Splunk, Slack, or any HTTP collector.
- Regulator metadata index — real-time BoltDB sidecar backing the multi-tenant fleet view (
/audit-meta/fleet). - Traces + metrics — policy VERDICT spans at
/v1/traces, OTLP/HTTP JSON ingest at/v1/otel/v1/tracesfor agent-reported spans, Prometheus metrics at/metrics/prometheus.