Introduction
Conformal Logit Inference (CLI) turns the raw output of any LLM — a generated-token log-probability, a sampled answer, a judge’s verdict, a hidden-state activation — into a finite-sample statistical guarantee. It is not a model. It is a calibration and decision layer that sits between the model you already use and the code that has to act on its output.
CLI ships three engines:
- Conformal prediction — prediction sets, intervals, and risk-controlled decisions with a marginal or group-conditional coverage guarantee.
- Venn-Abers calibration — probability intervals with a formally proven calibration guarantee, instead of heuristic confidence scores.
- E-values — anytime-valid drift monitors, safe optional stopping, and false-discovery-rate control that survives arbitrary dependence between simultaneous decisions.
All three require only one assumption: that your calibration data is exchangeable with the production traffic the guarantee is meant to cover. None of them require the underlying model to be accurate, unbiased, or trained any particular way — a worse model only produces bigger sets, wider intervals, or more escalations, never an invalid guarantee.
Where to start
| If you want to | Read |
|---|---|
| Make a first guaranteed call | Quickstart |
| Understand the one assumption | Exchangeability |
| See the math behind each engine | The three engines, Venn-Abers, E-values |
| Pick a primitive | Primitives |
| Follow an end-to-end scenario | Guides |
| Connect your model | Backends, Provider connections |
| Use the hosted service: keys, limits, jobs | Hosted API |
| See what happened on every request | Observability, Events API, OTLP |
| Set up a team, roles and SSO | Organizations and SSO |
| Test without provider keys | Testing without keys |
| Read a guarantee card | Guarantee reference |
| Run everything inside your own network | Self-hosting |
| Handle failures | Errors and retries |
Two ways to run it
- The hosted service at
https://cci.gitdate.ink/api/v1. You bring your own provider key, stored as an encrypted connection, or your own model through aCustomBackend; the service keeps calibration profiles, runs calibration jobs, monitors and audits, and records a trace of every request. Authenticate with acci_live_...API key. - Local mode in your own process:
LocalCLIClientruns the same statistics engine against a model you bring, with profiles stored as files, and the offline engine needs nothing but NumPy.
The seven primitives
| Primitive | Returns | Guarantee |
|---|---|---|
Belief | A Venn-Abers probability interval for one statement | Venn-Abers calibration |
Set | A set of options | Coverage |
Interval | A conformalized ordinal or continuous interval | Coverage |
Gate | auto_approve or escalate | Risk target, risk target with probability , or FDR target |
Claim | Long-form output filtered to supported claims | |
Judge | A verdict, with an escalation cascade | Human agreement on non-escalated verdicts |
Route | Which backend in a cascade served the request | Cost budget or accuracy bound |
Every guarantee in the table is marginal (averaged over exchangeable data) or group-conditional (averaged within a declared group). None is a promise about one individual decision.
Design principle
CLI never returns a guarantee it cannot back. Every primitive requires a
calibration profile, and a profile with too few labelled examples for the
requested serves a heuristic-labelled answer instead of silently
under-covering. The SDK makes that visible (answer.is_heuristic) and can
refuse it outright (CLIClient(strict_guarantees=True)). Each profile
calibrates exactly one query against one backend: a different backend on a
strict profile fails closed rather than borrowing a calibration it was not
built on. See Guarantee reference for the exact schema and
Calibration profiles for the lifecycle.