NoData is an Information Access Processor: it computes access, enforces policy, and proves every decision — so the model only ever sees what it's cleared for. compute · verify
One API · One decision · One proof.
The result: you keep control of every piece of information — even after it leaves the system where it was created.
For the people accountable for it — security, data, and AI teams.
// an AI agent asks for two fields it was granted, and one it wasn't const { answer, proof } = await nd.compute({ columns: ["first_name", "plan_tier", "ssn"] }) ✕ ssn withheld · key never derived · plaintext never existed for this request // verify the decision — third-party, no key, no decryption await nd.verify(proof.id) ✓ authentic · unaltered · no key held · no data seen▍
Your stack protects systems. NoData turns each unit of information into a self-governing object that carries its own policy, enforcement, and proof, wherever it goes.
It doesn't replace them. It gives every particle of information all five, on the information itself.
reject_policy_55.pdf: a medical rejection carrying an SSN, for a VIP client. What five separate systems do from the outside, NoData does as one object.
Understood field by field, in the browser, before we ever see it.
Keys for the SSN and diagnosis are never derived, except for the agent on this case.
The policy rides inside the file, even after it leaves the building.
The AI gets only the authorized context, never another client's medical data.
Two years on, the auditor gets a math proof the SSN key was never computed.
Five systems collapse into one self-governing object. Three calls, Create · Read · Prove.
The whole product is three calls. Deny-by-default, fail-closed, signed. The same gate governs a person, an app, and an AI agent, identically.
Seal the information and attach its rules: who, which fields, which classifications, how long. The policy travels with it.
Keys are derived only for granted fields. Everything out of scope is refused, not filtered afterward. The key is never computed.
Allow or deny, every touch binds a signed, hash-chained receipt. Export a certificate of exactly what could never be reached.
Not filtered.
Never derived.
If information is outside the scope, its key is never computed. The consumer never receives the data, and no server ever held it in the clear. That is the line DLP, DSPM, IAM, and RAG filters can't cross: they all still assume a place where the data sits open.
Today's AI defenses are “fundamentally probabilistic and fail to offer robust protection.” Only deterministic access enforcement can reliably prevent leakage.