Ring 0 is open to design partners running agents against production systems. Request access

Developers · adapters

We sit under your harness, whichever one it is.

Adapters exist so that adopting Velone is not a migration. The harness keeps planning and keeps its own abstractions; only the execution path moves.

01 / Claude Agent SDK

generally available@velone/claude

Replaces the bash, file, and computer tools with governed equivalents. Subagents inherit a child session.

import { query } from "@anthropic-ai/claude-agent-sdk";
import { veloneTools } from "@velone/claude";

const tools = await veloneTools({
  session: "claims-bot",
  policy: "./velone.policy.yaml",
});

for await (const msg of query({ prompt, tools })) {
  // every tool use crosses the kernel first
}

02 / OpenAI Agents SDK

generally available@velone/openai

Wraps function tools and the code interpreter. Guardrails still run; policy runs after them and wins.

import { Agent, run } from "@openai/agents";
import { governed } from "@velone/openai";

const agent = new Agent({
  name: "claims-bot",
  tools: governed([refundTool, emailTool], {
    session: "claims-bot",
  }),
});

await run(agent, input);

03 / LangGraph

generally availablevelone-langgraph

A checkpointer plus a tool-node wrapper. Velone sessions map to LangGraph threads one to one.

from velone.langgraph import GovernedToolNode, VeloneSaver

graph = StateGraph(State)
graph.add_node("tools", GovernedToolNode(tools, session="claims-bot"))

app = graph.compile(checkpointer=VeloneSaver())

04 / CrewAI

generally availablevelone-crewai

Each crew member gets its own principal, so attribution survives a multi-agent run.

from velone.crewai import governed_crew

crew = governed_crew(
    Crew(agents=[researcher, writer], tasks=tasks),
    session="content-crew",
    ring=2,
)

05 / Codex CLI

generally availablevelone codex

Runs the Codex sandbox inside a Velone microVM instead of the local machine.

$ velone codex --policy velone.policy.yaml \
    --repo ./service-billing \
    -- "fix the failing integration tests"

06 / Google ADK

betavelone-adk

Tool interception is complete; session mapping to Vertex sessions is still landing.

from velone.adk import GovernedToolset

agent = Agent(
    model="gemini-2.5-pro",
    tools=GovernedToolset(tools, session="claims-bot"),
)

07 / Microsoft Agent Framework

betaVelone.Agents

Entra principals map to Velone principals directly, so approvers are your real directory users.

var agent = new ChatClientAgent(client)
    .WithVeloneKernel(session: "claims-bot", ring: 2);

08 / Your own loop

generally available@velone/sdk

The base SDK is the adapter. If you can name the call site, you can govern it.

const out = await session.shell(cmd);
const res = await session.http.post(url, body);
const val = await session.mcp.call("github", "create_issue", args);

09 / questions

What if our harness is not listed?

Use the base SDK. An adapter is a thin wrapper that knows where a given framework executes tools; writing one for an in-house harness is usually under a hundred lines, and we will help.

Do adapters lag behind the frameworks?

Sometimes, and we say so in the status above rather than claiming day-one support. Tool interception is stable across versions; the parts that break are session and checkpoint mappings.

Can we use two harnesses at once?

Yes. A parent session can spawn children running different frameworks, and the evidence chain treats them as one story with separate actors.

keep reading

Ring 0

Bring the harness you already run.

Tell us what you are using. If the adapter is not ready, we will write it with you during the pilot.

curl -fsSL velone.in/install.sh | sh