Integrations
One engine, several doors. Each answers the same question at a different moment in the loop.
Editor hook — the enforcing half
Runs before an agent's edit lands, and can refuse it. This is the only surface that prevents a weakening rather than reporting one afterwards.
yieldpoint install-hook --advisory # reports only
yieldpoint install-hook --enforce # blocks
MCP server — so the agent can ask
Registers seven tools, including a zero-argument yieldpoint_review the
agent can call after finishing a set of edits.
yieldpoint install-mcp --client cursor
Pre-commit
repos:
- repo: https://github.com/tensilestream/yieldpoint
rev: v0.1.1
hooks:
- id: yieldpoint
The hook runs review --staged, which asks git for the staged diff itself.
Do not use check --diff - here: pre-commit gives a hook no stdin, so it reads
an empty diff and reports ok on everything.
CI
- run: pip install yieldpoint
- run: yieldpoint review --against origin/main --json
Exit 1 on findings, 3 when nothing could be analysed. Treat
3 as a failure in any pipeline that matters: it means the gate did not run,
which is not the same as passing.
Agent frameworks
A LangGraph adapter ships in the package, with a router that turns a verdict into an
edge. The unverified status has its own unmapped edge by default, so a graph
that never considered the case raises rather than quietly applying an unchecked change.
from yieldpoint.langgraph import make_router
graph.add_conditional_edges("verify", make_router(on_unverified="escalate"))
Runnable examples for plain loops, CrewAI, the OpenAI Agents SDK, fan-out and long-running sessions are in examples/.
Measuring it
yieldpoint stats # totals, plus a per-turn timeline
yieldpoint stats --html # the same, as a page
yieldpoint export # the ledger as JSON Lines
Recording is local only. To send it somewhere, name a command in
YIELDPOINT_SINK and Yieldpoint pipes each turn's events to its stdin —
it never opens a socket itself.