Compute gives an agent every computer it needs. Agents runs, schedules and caps the work on them. Use one or both.
Sandboxes, GPUs, desktops and your own machines behind the same calls. The agent picks, and can change its mind mid-task.
Name a provider and get a computer. The calls to run code, write files and stream output are the same on every one.
# same call, any provider
POST /v2/sessions
{ "compute": { "provider": "e2b" } }
POST /v2/sessions/:id/run
{ "code": "npm test" }
→ exit_code 0 · 41 passed
Move a running session to another computer on your account. The transcript and every step so far come along, so the agent carries on where it was.
POST /v2/sessions/:id/change-compute
{ "compute": { "compute_id": "comp_macmini" } }
# or first available, in order
{ "compute_priority": ["comp_macmini", "comp_laptop"] }
Watch the agent's computer while it works. When it hits a login or a 2FA code, click in, type it, and hand the machine back.
<!-- your page -->
<script src="https://cerver.ai/embed/cerver-screen.js"></script>
<cerver-screen session="SESSION_ID" token="cvs_…"></cerver-screen>
# your server mints the token
POST /v2/sessions/:id/screen/token
{ "control": true, "ttl_seconds": 900 }
Every computer your agents can use, in one pool: the provider accounts you connected and your own machines. See what is on, what it costs and who bills you. Soon, keep a few of each kind warm and let a router send every task to the best fit.
See how routing worksincoming → routed to
render 40 thumbnails a GPU 2 warm
reply to a chat a small sandbox 6 warm
log in and export a desktop 1 warm
read ~/reports your Mac online
Every run is kept, the gateway lets any agent or model drive it, it can run on a schedule, and it stops at the cap you set.
A session is one piece of work: the transcript, the tool calls, the computer it ran on and what it cost. Nothing is lost when the machine goes away.
GET /v2/sessions/:id
{
"status": "idle",
"provider": "e2b",
"transcript": [ … 42 entries … ],
"metrics": { "cost_estimate_usd": 0.31 }
}
One door for every agent and every model. Pick the agent and the model per session, change either mid-task, and see what each developer and each customer spent.
# pick the agent, or just the model, mid-session
POST /v2/sessions/:id/switch-tool
{ "cli_tool": "codex" }
{ "cli_model": "claude-haiku-4-5-20251001" }
# route a team's Claude Code and Codex through Cerver
cerver connect --project acme
cerver gateway on # metered, capped, redacted
cerver gateway off # back to your subscription
Agents that run on their own. Give a schedule and a prompt, or a workflow of fixed steps. Every firing is a session you can read.
POST /v2/projects/:slug/crons
{
"name": "nightly-report",
"schedule": "0 6 * * *",
"prompt": "Summarise yesterday's signups.",
"harness": "claude"
}
A chat for your users in two lines. Cerver stores the conversations, streams the replies and tells you what each customer costs.
Chat in the docs<script src="https://cerver.ai/embed/cerver-chat.js"></script>
<cerver-chat pk="pk_live_…"
system-prompt="You answer questions about our docs.">
</cerver-chat>
Every step is priced on the computer and model it used, and rolled up per agent and per customer. A cap is a hard stop, not an alert.
PUT /v2/account/spending-limit
{ "limit_usd": 20 }
GET /v2/account/usage-by-customer
→ spend per external_user_id