This release is a pre-release and may not be stable for production use.
Certior
Provable boundaries for multi-agent AI. A capability boundary for OpenClaw, LangChain, CrewAI, and your own delegation chains - every agent-to-agent call is checked by Z3 against a Lean-audited policy before it runs. Allowed calls return a signed receipt. Blocked calls raise
CertiorBlockedwith a precise reason.
Homepage: certior.io · Docs: docs.certior.io · Source: github.com/paulinebourigault/certior
Install
pip install certior
Requires Python 3.11 or later. Pulls in z3-solver, httpx, pydantic, jsonschema, and PyYAML.
Every tool call is enforced by Z3 against a policy model proven sound in Lean 4 offline. For live lattice-proven flow verification on every call, fetch the Lean binary on demand (not bundled in the wheel; ~90 MB, Linux x86_64 / macOS arm64):
pip install "certior[lean]"
certior-install-lean # downloads + SHA-256-verifies the binary, fails closed on mismatch
Without it the runtime stays on the always-on Z3 path.
Quickstart
from certior import Guard, CertiorBlocked
guard = Guard(permissions=["network:http:read"]) # an agent's capability boundary
@guard.wrap(required_capabilities=["network:http:read"]) # tool calls + child agents must fit inside
def web_fetch(url): ...
web_fetch("https://example.com") # allowed -> call runs, recorded in guard.audit_log
# capability escalation -> raises CertiorBlocked
# signed certificate of the decision: guard.verify(...).certificate
One decorator. Wraps any function. The rest of your code is unchanged.
Full 5-minute walkthrough: docs.certior.io/quickstart.
What it does
Three gates run before every tool call:
| Gate | Checks |
|---|---|
| Capability | child agent's capabilities ⊆ parent's; tool requires only what's granted |
| Content | HIPAA / SOX / attorney-client / custom detectors on prompts and outputs |
| Budget | per-agent hard ceiling; every step debits the parent |
Allowed calls return a signed certificate bound to a Lean-checked policy fingerprint. Blocked calls raise CertiorBlocked with a precise reason. An auditor reproduces the audit with a single lake build.
See how it works and certificates for the runtime model.
Adapters
| Framework | Module | Guide |
|---|---|---|
| OpenAI tool use | certior.adapters.tool_use |
docs.certior.io/guides/openai |
Anthropic tool_use |
certior.adapters.tool_use |
same recipe, native shape |
| LangChain | certior.adapters.langchain |
docs.certior.io/guides/langchain |
| CrewAI | certior.adapters.crewai |
docs.certior.io/guides/crewai |
| OpenClaw | certior.adapters.openclaw |
docs.certior.io/guides/openclaw |
| MCP / custom | @guard.wrap(...) |
docs.certior.io/guides/custom-loop |
What is proven
Three formal tools, three jobs:
- Z3 runs on every tool call and proves the action satisfies capability, budget, and flow constraints.
- Lean 4 machine-checks the policy model (155 theorems and lemmas, 0
sorry, 0 axioms beyond Lean's standard three:propext,Classical.choice,Quot.sound). CI fails the build if any of the four headline guarantees -delegationSafety,ifcSoundness,compositionSoundness,SecurityLevel.isValidBoundedLattice- stops depending only on standard axioms. - Dafny statically verifies kernel properties (path-safety, seccomp).
Certior does not verify the LLM's behaviour. It verifies the boundary the LLM operates inside.
Full assurance model: docs.certior.io/reference/trust-package.
Server, Studio, examples
The pip package is the SDK. The GitHub repository ships the FastAPI server, the Certior Studio UI, the Lean kernel, the GitHub Action, the certior-skill-audit CLI, and runnable examples:
Status
Alpha release, in active development under Apache-2.0. Public API may change between minor versions during the 0.x line; pin to certior==0.1.* for compatible updates.
Looking for design partners in healthcare, finance, legal, and regulated AI teams who need real audit trails on agent workflows.
Contact: hello@certior.io
Metadata
Release files for certior 0.1.0a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| certior-0.1.0a2.tar.gz | 368.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| certior-0.1.0a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 792.5 kB
Release files / certior-0.1.0a2.tar.gz
| Download URL | certior-0.1.0a2.tar.gz |
|---|---|
| Size | 368.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9fdae7e98ace8cfe00669860decc8d856efe5a57a3f267b1e36d5eab06d89b88
|
|
BLAKE2b-256 checksum How to use checksums |
617ade2f03da7215de694123a19a2d1e5fad7b1889df01de41fc7ac0164197e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / certior-0.1.0a2-py3-none-any.whl
| Download URL | certior-0.1.0a2-py3-none-any.whl |
|---|---|
| Size | 423.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
58c2732d3d6ffbf049734b01c1ad8defd3cf33892e4ff10667281c64f87bf4c0
|
|
BLAKE2b-256 checksum How to use checksums |
07954bd913788bc5afcd47df3f7554a2ee6f734c5643b632b0b6412c2c9d1f62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|