Blog
Design notes from the people who built it. Each post opens with the answer. RSS
· definitions
What is a tamper-evident audit log?
Definition of a tamper-evident audit log, how it differs from tamper-proof, and the three parts it is built from: hash chain, Merkle root, external anchor.
· anchoring
Sigstore Rekor and OpenTimestamps as public anchors
What Rekor and OpenTimestamps are, what each one proves, why AuditKit uses both, and how to read the anchors page.
· design
Signed ingest receipts
Every accepted event returns position, event_hash, prev_hash and an Ed25519 server signature. Keep them, and a later verify proves the service never dropped or reordered an acknowledged event.
· mcp
Query your audit log from Claude (MCP)
AuditKit's MCP server: seven tools over Streamable HTTP with the same API key as REST, tool annotations, what is read-only, and how to add it to Claude Code or Claude.ai.
· postgres
Immutable audit logs in Postgres: what a DB admin can still do
REVOKE, triggers, pgaudit and hash-chain columns each stop something; none stops a superuser, a restore from backup, or a dropped partition. What an external anchor changes.
· design
How Merkle trees make an audit log verifiable
Leaves, roots and inclusion proofs; why AuditKit builds three levels (tenant, project, global) and what an inclusion proof lets a tenant check without the rest of the log.
· gdpr, design
Crypto-shredding: immutable logs and the right to erasure
How a per-event salt lets an audit log honour GDPR Article 17 erasure while the hash chain, Merkle roots and public anchors stay valid, following the EDPB's Guidelines 02/2025 pattern.