One API. Any agent. Your infrastructure.
The self-hosted Managed Agents API. Run Claude Code with your Max subscription, OpenCode, or Codex on your own containers — zero per-token fees, zero vendor lock-in.
Self-hosted. Multi-provider. No lock-in.
Same API as Anthropic’s Managed Agents — running on your infrastructure, with your choice of model provider.
Zero vendor lock-in
Run Claude today, swap to Codex tomorrow — one config change. Mix providers on the same project. Your application code never moves.
Your infra, your uptime
sprites.dev for cloud (~2s). Docker for local (~3s). Apple Containers for macOS 26+ (~1s). Self-hosted means your reliability, not theirs.
Use your Claude Max sub
Run agents with your flat-rate Claude Max subscription via Claude Code CLI. No per-token billing, no $0.08/session-hour fees. Unlimited agent sessions at zero marginal cost.
Gate dangerous actions
Confirmation mode lets humans approve tool calls before execution. Agents propose, you dispose. Partial answer to the governance-of-output problem.
Mix models per task
Use Claude for complex reasoning, Codex for code generation, OpenCode for quick edits — different agents, different backends, same session API.
Full UI out of the box
Chat for conversations. Admin for managing agents. Playground for raw event streams. Evaluate before you integrate.
One surface, clean layers
Your app talks to one API. Managed Agents handles the rest.
┌─────────────────────────────────────────────────────┐ │ Web UI (Chat / Admin / Playground) │ ├─────────────────────────────────────────────────────┤ │ /v1/* REST API (Managed Agents spec) │ ├─────────────────────────────────────────────────────┤ │ Driver (turn orchestration, SSE, event bus) │ ├──────────┬──────────┬──────────┬────────────────────┤ │ claude │ opencode │ codex │ anthropic (proxy) │ │ backend │ backend │ backend │ │ ├──────────┴──────────┴──────────┼────────────────────┤ │ ContainerProvider interface │ HTTP proxy to │ ├──────────┬──────────┬──────────┤ api.anthropic.com │ │ sprites │ docker │ apple │ │ │ .dev │ │container │ │ └──────────┴──────────┴──────────┴────────────────────┘
Four backends, one event protocol
Models change. Providers change. Your integration shouldn’t.
Use your Max subscription or API key. Session resume, permission hooks
Non-interactive JSON mode, routes via model prefix
Full-auto JSON, seven-second install, zero config
Transparent pass-through, your key, their infra
From npm install to running agent
Five minutes. One API key. That’s it.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "http://localhost:3000", apiKey: "ck_...",});
// Pick a backend. Pick a runtime. Go.const agent = await client.beta.agents.create({ name: "Coder", model: "claude-sonnet-4-6", backend: "claude", tools: [{ type: "agent_toolset_20260401" }],});
const env = await client.beta.environments.create({ name: "dev", config: { type: "cloud", provider: "sprites" },});
const session = await client.beta.sessions.create({ agent: agent.id, environment_id: env.id,});
// Send a message, stream the responseconst stream = await client.beta.sessions.events.stream(session.id);await client.beta.sessions.events.send(session.id, { events: [{ type: "user.message", content: [{ type: "text", text: "Build a REST API" }], }],});
for await (const event of stream) { console.log(event.type, event); if (event.type === "session.status_idle") break;}API=http://localhost:3000KEY=ck_...
# Create an agent — swap "claude" for "codex" or "opencode" anytimecurl -s -X POST $API/v1/agents \ -H "x-api-key: $KEY" -H "content-type: application/json" \ -d '{"name":"Coder","model":"claude-sonnet-4-6", "backend":"claude", "tools":[{"type":"agent_toolset_20260401"}]}'
# Create an environment — swap "docker" for "sprites" or "apple"curl -s -X POST $API/v1/environments \ -H "x-api-key: $KEY" -H "content-type: application/json" \ -d '{"name":"dev","config":{"type":"cloud","provider":"docker"}}'
# Stream eventscurl -N $API/v1/sessions/$SESS/stream \ -H "x-api-key: $KEY"Your Max subscription. Unlimited agents.
Use your Claude Max flat rate instead of per-token API billing. Self-hosted, multi-provider, from npm install to running agent in 5 minutes.