Audit · Open Source
fasten
The substrate. Record what happened — correlated across every transport, hash-chained so it can't be quietly rewritten.
One substrate · three products
fasten is the open-source substrate that records what happened — typed, correlated by one request_id, tamper-evident. membrane governs what your agents believe; fasten fleet carries the fleet and the compliance. One record, three lenses.
One Substrate · Three Products
Audit · Open Source
The substrate. Record what happened — correlated across every transport, hash-chained so it can't be quietly rewritten.
Belief · Commercial
Built on fasten, for AI agents. mbnl normalizes any model's output, then membrane computes what the agent believes — which source won, what drifted, what's stale — and the control tier enforces policy before a bad action lands.
Explore membrane →Data Plane · Commercial
Aggregate the whole fleet into one queryable plane — compliance reports, tamper-evident archive, tiered retention. Hosted or air-gapped.
Explore fleet →membrane and fleet are built on the fasten substrate — one typed, correlated, tamper-evident event model. A layer below agent-orchestration frameworks (LangGraph · CrewAI · AutoGen) and above per-call tracing, where every framework leaves state to you.
How it works
Every stream — across agents, services, and transports — threads into one typed substrate. On top sit two lenses and a control tier; the model is Audit → Belief → Correction:
fasten
Record what happened — typed, correlated by one id, tamper-evident across every transport.
membrane
Compute what the agent believes and reconcile it against your systems of record. Catch drift.
membrane · control tier
Decide and enforce — block the action on stale or contradicted state before the side-effect lands.
↳ mbnl sits in front of all three — normalizing any model or vendor's output to one typed event before it enters the substrate. control is membrane's enforcement tier, not a separate product.
Why fasten
Most teams already run a great observability platform and a great compliance platform. They still carry a gap — a homegrown audit table, glue code, and quarterly log scraping for the obligations that need verifiable evidence. fasten fills that gap natively, and gives both AI observability and AI governance the substrate they ought to be reading from.
Typed at the source
Every audit event is a value in a finite catalogue you ship with the code (fasten.codes.register(...)). The reader, the agent, and the auditor share one closed vocabulary. Hallucinated field names are structurally impossible.
Correlation at the type level
request_idEvery audit row carries who, what, when, where, why, how, and the correlation id. Joins across audit · sys · api · across the fleet are not inferred — the schema does them. One request_id threads everything.
Independently verifiable
Each audit row carries prev_hash and hash. Tampering surfaces at first_break_at with a reason string. The chain is verifiable without the LLM in the loop — the row either matches or it doesn't.
One substrate, two reasoning lenses on top: fasten fleet's /investigate reasons over audit history and returns cited rows; Membrane reasons over agent beliefs and blocks bad state at write time. Same hash-chained rows — different surfaces. The evidence is the same row both lenses cite.
membrane · Drift Reconciliation
An agent holds plan = Growth, active. Billing cancelled them three days ago — a missed webhook, or a value cached at session start. membrane reconciles the belief against the source of record and flags the divergence before the refund goes out.
fasten fleet · The 2 a.m. Incident
Two hundred instances; one misbehaves; the request crossed MQTT → scheduler → microservice → an external API. Jaeger sees HTTP spans, Loki has unstructured logs, the audit table is local and homegrown. fasten threads one id end to end; fleet aggregates every node into one queryable plane.
Open source, six languages, your first hash-chained event in five minutes. Add membrane and fleet when you need belief and the fleet view.
The audit substrate for distributed systems — and the belief layer for the AI agents on top of them.