Consent gets separated from data
A permission is captured in one system while the data flows into many. By the time a dataset reaches a model, the consent behind it is gone.
Issue, verify, revoke, enforce, and audit machine-readable consent across datasets, agents, applications, and AI pipelines.
Built for AI-era data governance. Designed for LLMConsent-style consent records.
Explore LLMConsent ↗const consent = await oconsent.verify({
subject: "user_123",
asset: "conversation_export",
purpose: "llm_training",
actor: "model_pipeline_7"
});
if (!consent.allowed) {
throw new Error("Consent not granted");
}2026-06-28T10:22:04Z verify asset=conversation_export actor=model_pipeline_7 → ALLOWED
A permission is captured in one system while the data flows into many. By the time a dataset reaches a model, the consent behind it is gone.
When a customer or regulator asks what a model was trained on, and why it was allowed, screenshots and spreadsheets are not evidence.
Someone withdraws consent, but the data already sits in pipelines, caches, and fine-tunes that never hear about it.
One record, checked everywhere it matters. The same consent object follows your data from the moment it is issued through to the audit trail.
Mint a signed, machine-readable consent record that names the subject, asset, purpose, and allowed actors.
Check permission at the point of use with one call, before any dataset, agent, or pipeline touches the data.
Wire enforcement hooks into your code so disallowed use is blocked by default, not flagged after the fact.
Withdraw a permission once and let revocation propagate to every consumer that checks.
Produce tamper-evident audit proof of who used what, for which purpose, and under whose consent.
Install the SDK, point it at your registry, and gate any AI workload on a live consent check. No banner, no bespoke plumbing.
npm install @oconsent/sdk
import { OConsent } from "@oconsent/sdk";
const oconsent = new OConsent({
apiKey: process.env.OCONSENT_API_KEY
});
const result = await oconsent.verify({
subject: "user_123",
asset: "support_chat_2026_04",
purpose: "model_finetuning",
actor: "customer_support_llm"
});
if (result.allowed) {
await runPipeline();
} else {
await skipAsset(result.reason);
}LLMConsent defines what AI consent should mean. OConsent makes it enforceable in software.
Withdrawing consent so it actually propagates, and producing evidence of every decision that you cannot quietly edit later.
How to turn a consent record into an allow or deny decision at the moment data is about to be used.
A field-by-field look at the consent record OConsent issues, and why each part is in there.
Start with verifiable consent records and make AI data use auditable by design.