For agents

Memory, compute, and secrets — on one API.

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.

What an agent gets, on its own.

Three calls. Three layers. No human in the loop.

01

Cross-run memory

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.

02

Compute on demand — and on demand for sub-agents

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.

03

Secrets the agent fetches itself

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.

Swap the runner. Keep the conversation.

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.

sess_a4f7c9…
stays
Running with
Claude Code Codex CLI Grok
Running on
E2B sandbox Vercel sandbox Local relay
transcript stays
> build a hello-world server
✓ created server.js
✓ tests pass · port 3000

Two things change. Two things stay. Mid-conversation, no restart, no reset.

Don't pick the model. Curate the winner.

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.

intent Refactor this auth flow
SonnetE2B✓ 24s$0.04
SonnetVercel✓ 31s$0.05
Opuslocal✓ 18s$0.12
OpusE2B✓ 22s$0.13
HaikuVercel✓ 9s$0.01
Haikulocal✓ 11s$0.01
CodexE2B✓ 27s$0.06
CodexVercel✓ 33s$0.07
Codexlocal✓ 16s$0.06
GrokE2B✓ 14s$0.03
GrokVercel✓ 19s$0.04
Groklocal✓ 10s$0.03

1 intent · 12 runners · 1 winner · 1 session_id

One problem. Many runners. Keep the winner.

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.

From

Ten tasks, one harness.

Context-switching across unrelated problems on the same model. No signal which one is the bottleneck. Mistakes pile up; throughput drops.

To

One task, three runners.

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.

switch model mid-session switch compute mid-session spawn sibling sessions

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.

Agent code that's just three primitives.

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.

python · agent loop
# 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)

Other ways teams use Cerver.