Two capture layers. One record. Same CLI to verify.
Auto-instrument records every LLM call made through the instrumented client, with zero code changes, for EU AI Act Article 12 and GDPR record-keeping. The decorator wraps specific regulated functions, built for OCC examination and litigation.
We recommend running both in production.
Both modes capture evidence at a different layer of the same call stack. Both produce a record signed with the same Ed25519 algorithm, committed to the same WORM storage, verifiable with the same CLI.
Wraps your business function. Hashes the business inputs before the function runs. at the point where a regulated decision is being made, not at the LLM call. A tampered input produces no artifact. Sets capture_layer = BUSINESS_LAYER, consequential = true.
Process-level monkey-patch of LLM client libraries. Captures every call at the client boundary. same pattern as ddtrace-run and opentelemetry-instrument. Zero code changes. Sets capture_layer = LLM_LAYER, consequential = false by default.
Same Ed25519 signing. Same S3 Object Lock COMPLIANCE mode WORM storage. Same RFC 3161 trusted timestamp. Same standalone plainreal verify CLI. The capture_layer field tells the auditor which forensic claim applies. The 4-pillar evidence chain is identical. Functions wrapped with the decorator skip auto-capture automatically. a ContextVar guard ensures exactly one record per call, never two.
Not alternatives. complements. The question is which capture layer a given decision requires, not which product to use.
| @plainreal.consequential Decorator mode |
plainreal run Auto-instrument mode |
|
|---|---|---|
| Tagline | "Prove the decision." |
"Capture every call." |
| Capture point | BUSINESS_LAYERBusiness function boundary. before the function runs |
LLM_LAYERLLM client library boundary. every API call |
| Code change | One decorator per regulated function @plainreal.consequential(..) |
Zero plainreal run python app.py or PLAINREAL_AUTO_INSTRUMENT=1 |
| What it proves | Principal X was authorised to take action Y with input committed to hash H under policy version Z. The action executed against the same input. Cryptographic proof an examiner or opposing counsel can verify for themselves. |
Every LLM call this process made was captured at the client boundary, signed, WORM-committed, and timestamped. Complete audit trail, right there. |
| capture_layer | BUSINESS_LAYER |
LLM_LAYER |
| consequential | true |
false (default) |
| Primary buyer | Chief Compliance Officer General Counsel Head of Risk |
CISO Security Architect VP Engineering |
| Regulations |
|
|
| Pricing | $20K/yr starter$40–80K/yr enterprise · $15–25K 90-day pilot |
Contact usEntry tier · designed as path to decorator |
| Start here if… | You face OCC examination, NYDFS review, or litigation discovery for AI-assisted decisions. |
EU AI Act Article 12 or GDPR Article 22 record-keeping is your near-term driver. |
Both terminate at plainreal verify. the standalone CLI your auditor runs independently.
One decorator per regulated function. No changes to internal logic.
Same pattern as ddtrace-run and opentelemetry-instrument. Every LLM call is captured.
The decorator and auto-instrument are designed to run together. The ContextVar coexistence guard detects when a function decorated with @plainreal.consequential is in the call stack and suppresses the auto-instrument capture for that path. This means:
Decorated functions produce BUSINESS_LAYER records. the stronger evidence, the kind that holds up in litigation.
All other LLM calls produce LLM_LAYER records automatically.
One record per decision. Never two.
@plainreal.consequential to those functions. BUSINESS_LAYER artifacts replace LLM_LAYER for those paths. Evidence designed for OCC and NYDFS examination.
All tiers produce the same record, verified by the same standalone CLI. The tier determines evidence grade and support level.
Two design partners only
Dedicated signing key: add-on, contact for pricing
One conversation to see which deployment mode fits your environment and which regulatory deadlines to prioritise.