Your agent shouldn't have to ask you for a sandbox. Or a token. Or what its sibling did last week. Cerver gives the agent itself the three primitives it needs, behind one auth header.
Three calls. Three layers. No human in the loop.
Every session is a transcript. Sibling agents on the same account list and peek each other's history. "What did the cron do yesterday?" becomes one API call.
Sandbox is a tool the agent calls. Swap compute mid-conversation, or spawn sibling agents — each on its own compute, each on its own harness (Claude Code, Codex, Grok). The parent compares the outputs and ships the winner.
secret_fetch("OPENAI_API_KEY"). Backed by Infisical, env, or whatever the operator wired up. The agent never bakes secrets into prompts, commits, or chat history.
A cerver session has one identity and three replaceable parts: the harness driving it (Claude Code, Codex, Grok) and the compute it runs on. The transcript is the through-line — the rest swaps mid-conversation without touching it.
Two things change. Two things stay. Mid-conversation, no restart, no reset.
Spawn one runner per harness × compute combination, let them race the same intent, then pick the one that came back best. The picked session keeps going; the others stay searchable in case the next problem looks like one of them.
1 intent · 12 runners · 1 winner · 1 session_id
Most teams pile every task into one harness, then context-switch through ten unrelated half-fixes — slower output, more mistakes. Cerver flips it: one task at a time, several providers in parallel, the best output wins.
Context-switching across unrelated problems on the same model. No signal which one is the bottleneck. Mistakes pile up; throughput drops.
Same prompt, side-by-side outputs from Sonnet + Opus + Haiku — or Claude Code vs Codex CLI. Pick by quality, latency, cost, on receipts not preferences.
An agent can spawn three siblings — each on its own compute, each on its own harness (Claude Code, Codex, Grok) — with one extra session POST. The parent grades the outputs and ships the winner; the loser sessions stay searchable in case the next problem looks more like one of them.
No bespoke memory layer. No worker pool. No secret-manager glue. The agent uses Cerver the way you'd want it to use any tool — by calling it.
# Recall what a sibling agent did before you past = cerver.session_list(status="ready", limit=5) context = cerver.session_peek(past[0].id, last_n=10) # Spawn a sandbox just for this turn — agent owns it end-to-end sb = cerver.session_create(task="run the smoke test", compute={"provider": "e2b"}) cerver.run_stream(sb.id, code="npm test", on_event=on_event) # Fetch a secret directly — never seen by the model, never logged key = cerver.secret_fetch("BUFFER_API_KEY").value post_to_buffer(key, draft) cerver.session_delete(sb.id)
The shared backend every team builds on — every session, every compute, every secret. Auditable, portable, governed.
App developersPersistent sessions, streaming, per-user usage — three calls instead of three months.