ARK sits at every step your agent takes — vetoing an irreversible, ungrounded action before it runs and sealing the whole run to a tamper-evident audit. Same account and credits as chat; just point your agent at /v1/agent.
No separate plan. Start in audit mode (records everything, blocks nothing), then flip to enforce when you trust it.
Free 14-day trial · 15,000 credits · no card.
Sign up and grab your API key from the dashboard. Agent governance draws on the same prepaid credits as chat — no new wallet, no new SKU.
One small dependency. Drop in the two adapter files (or install the package once it's published).
# the binding's only hard deps
pip install httpx langchain-core
# vendor these two files into your project:
# ark_agent_governance.py (the over-the-wire client)
# langchain_ark.py (the LangChain / LangGraph adapter)
Point a session at the gateway, wrap your existing tools, and attach the recorder. Nothing in your agent's logic changes — ARK just observes and records every step.
from ark_agent_governance import ARKAgentSession
from langchain_ark import ark_guard_tools, ARKCallbackHandler
ark = ARKAgentSession(
base_url="https://arkgov.io", # or your self-host URL
api_key="sk-ark-...", # from your dashboard
goal="book the customer's refund",
mode="audit", # START here: record everything, block NOTHING
)
safe_tools = ark_guard_tools(my_tools, ark) # gate-before-run + record-after
agent = create_agent(model="...", tools=safe_tools)
Run your agent normally. ARK classifies each step by blast-radius (read · write · irreversible), records it to a hash-chained trajectory, and shows what it would have blocked — without stopping anything. This is how you earn trust before enforcing.
result = agent.invoke(task, config={"callbacks": [ARKCallbackHandler(ark)]})
# every step is now graded + recorded; in audit mode nothing is blocked
One call returns the tamper-evident chain-of-custody for the whole trajectory — the record a regulator or your own risk team can re-walk. Any later edit, deletion, or reorder breaks the chain.
print(ark.verify()) # {ok: true, entries: N, head: "..."} — survives restarts
Once audit mode shows ARK isn't flagging good actions, switch on enforcement. Now an irreversible, ungrounded action is blocked before it runs, and an action that needs sign-off routes to your human callback. ARK only ever blocks the irreversible-and-ungrounded tier, so a benign or grounded call is never auto-stopped.
ark = ARKAgentSession(
base_url="https://arkgov.io", api_key="sk-ark-...",
goal="book the customer's refund",
mode="enforce", # block / human-approve enforced
on_approval=lambda tool, args, decision: ask_a_human(tool, args),
)
The one rule that matters: ship mode="audit" first and live there until ARK's "would-have-blocked" rate is ~0. One wrong block of a legitimate action erodes trust faster than anything; audit-first earns it. Auditing is metered the same as enforcing — only the veto is held back.
Billing is per step, by blast-radius — most steps are near-free, and the full suite runs only on irreversible actions and the final answer. See the agent pricing → (pilots are free, metering waived).
Not on LangChain? Call the gateway directly: POST /v1/agent with {session_id, goal, step} — the raw API does the same gate + record.
See the live demo → · Agent pricing → · Back to home
Autonomous Reasoning Kernel — Governance for AI