Integrations
Integration Examples
Drop Prova into your agent runtime and every model call, tool call, and agent step becomes a signed receipt, with coordination loops, runaway cost, prompt injection, and PII caught inline. Pick your framework below. The full reference is the SDK guide.
LangGraph / LangChain (Python)
The callback handler auto-instruments every node, LLM call, and tool call, and flushes one signed agent_run receipt so the coordination-loop detector fires. It warns on a loop by default; pass break_on_loop=True to stop the run.
from prova_cp import ProvaClient, ProvaCallbackHandler
prova = ProvaClient(api_key="prv_...") # free key from /signup
handler = ProvaCallbackHandler(prova, app_id="claims-orchestrator")
# Drop into any LangChain / LangGraph run.
graph.invoke(inputs, config={"callbacks": [handler]})
# Add budget_usd / max_steps / break_on_loop for a one-line circuit breaker.CrewAI (Python)
CrewAI has no LangChain-style callbacks, so Prova wires its stable step_callback / task_callback hooks instead.
from prova_cp import ProvaClient
from prova_cp.crewai import ProvaCrewAI
prova = ProvaClient(api_key="prv_...")
tap = ProvaCrewAI(prova, app_id="research-crew", environment="production")
crew = Crew(
agents=[...],
tasks=[...],
step_callback=tap.step_callback,
task_callback=tap.task_callback,
)
crew.kickoff()AutoGen, or any custom runtime
No framework callbacks? RunGuard gives the same loop, budget, and step protection from two calls you place wherever your runtime advances. It imports no framework and the loop algorithm is identical to the server's.
from prova_cp import RunGuard, CoordinationLoopError, BoundaryViolationError
guard = RunGuard(budget_usd=0.50, max_steps=40, break_on_loop=True)
try:
for turn in run_agent(): # AutoGen reply hook, or your own loop
guard.observe_step(turn.agent, reads=turn.state_in, writes=turn.state_out)
guard.observe_model_call(turn.model, turn.token_usage)
except (CoordinationLoopError, BoundaryViolationError) as e:
log.error("circuit breaker tripped: %s", e)The Node SDK (@cobound/prova-sdk) ships the same ProvaCallbackHandler and RunGuard. See the SDK guide.
Already on LangSmith, Langfuse, or OpenAI logs
No re-instrumentation needed. Score a raw export offline (no account, nothing uploaded), or bulk-import it into the Audit Vault. For continuous mirroring see continuous ingestion.
# Score offline, no account
prova-local --source langsmith --file langsmith-export.ndjson
# Bulk-import into the Audit Vault (needs a key)
PROVA_API_KEY=prv_... prova-migrate --source langfuse --file observations.ndjsonLegacy verifier integrations
These wrap the original reasoning-chain verifier (not the control plane). They are still supported.
GitHub Actions: gate CI on reasoning validity
uses: cobound/prova-action@v1 blocks INVALID reasoning from reaching production, writes a Step Summary, and posts a PR comment.
MCP server: let an agent verify its own reasoning before answering
pip install prova-mcp for Claude Code, Cursor, Windsurf, Zed, or ChatGPT desktop: verify a chain, fetch a certificate, and kernel-check its Lean proof locally.