← Home

Govern your AI agent in ~15 minutes

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.

Create a free account → Prefer hands-on? Apply for a pilot

Free 14-day trial · 15,000 credits · no card.

1

Create your account & get a key

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.

2

Install the SDK

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)
3

Wrap your tools — start in audit mode

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)
4

Run it — watch, don't block

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
5

Prove the run

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
6

Flip to enforce — when your false-block rate is ~0

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