Wrap the call
Replace your model client with the Vouch SDK. Same surface, same ergonomics. Two lines.
Trust Verification Layer · v0.1
Vouch sits between your app and your model, runs every turn through nine independent classifiers — prompt injection, PII, semantic drift, embedding similarity, cipher payloads, model extraction, adversarial suffixes, slow-burn attacks, output risk — aggregates them into a single TVL score, and issues a signed certificate you can verify offline.
MIT-licensed broker · self-host or use the hosted broker at
broker.vouchsec.io
Replace your model client with the Vouch SDK. Same surface, same ergonomics. Two lines.
Nine classifiers run in parallel on input and output. Scores aggregate into a single 0–1 TVL final.
Tiered hard-fail floors. Decisions are
PASS, COMPLIANCE_NOTE, or
HOLD. Every turn signed and auditable.
First-class clients for the languages most LLM apps already speak.
Both target TVL protocol v0.1.
from vouch import Client
client = Client(api_key="tvl_demo_key_abc123")
resp = client.secure_chat(
user_message="Summarize the Q2 board memo.",
)
if resp.is_allowed:
print(resp.output)
import { Client } from "@vouchsec/sdk";
const client = new Client({ apiKey: "tvl_demo_key_abc123" });
const resp = await client.secureChat({
userMessage: "Summarize the Q2 board memo.",
});
if (resp.decision === "PASS") console.log(resp.output);
No safety layer catches everything. Vouch publishes its threat model so you can decide if the coverage matches your risk tolerance — not the other way around.
Every request passes through 22 scored classifiers across nine layers,
covering 10 of the 11 OWASP LLM Top 10 (2025) risk classes. The full
manifest is live and machine-readable at
broker.vouchsec.io/v1/health
and the per-class coverage matrix at
/v1/coverage
(HTML view:
/coverage).
Every /v1/secure-chat response carries the same coverage block
under tvl_coverage.
Vouch v0.30.0 ships all 22 classifiers above. Per-class
TPR / FPR / FNR remain unmeasured until the nightly eval
harness publishes evals/results/latest.json — until then
/v1/coverage reports status: unknown across the
matrix, with the 99 / 2 / 2 operating-point gate (TPR ≥ 0.99, FPR ≤ 0.02,
FNR ≤ 0.02) ready to fire on every PR.
Harmful-content output (LLM09) runs in log-only mode in this build: it is scored and signed into the certificate but does not auto-gate the response. The upstream LLM's own refusal is still the blocking layer for content-safety today.
These are documented limits of the underlying ML classifiers and the threat model. No vendor — including the ones who don't publish their gaps — closes them today.
/v1/coverage. Poisoning happens at vendor training time, before any request reaches Vouch.language_covered: false on these and downgrades tvl_final, but does not classify the content itself. (Multilingual jailbreak research, ACL 2025)since field in the manifest tells you exactly when each classifier last shipped.tvl_final
Strict signal. At least one implemented classifier fired. Decision is HOLD or COMPLIANCE_NOTE. Inspect findings[] and classifier_results for which axis tripped.
No known pattern matched. Not a guarantee of safety — classifiers are probabilistic and novel attacks may pass. Treat as "screened, not certified."
Threat model as of broker
v0.30.0
(2026-06-18). Per-class targets are defined in the
99 / 2 / 2 operating-point decision doc.
For the canonical machine-readable manifest, query
/v1/health or /v1/coverage. Vouch versions
threat-model claims so you can diff coverage between releases.
Stakes vary. So do floors. Pass the tier per call; the broker enforces the right hard-fail threshold and escalation policy.
Self-host the broker, or use the hosted endpoint at
broker.vouchsec.io. Either way, the protocol is open
and the SDKs are MIT.