Per-user sessions
Pass an external_user_id and cerver scopes the session, transcript, and listing to that user. Your customers never see each other's threads.
For app & platform builders
Transcript, model routing, tools, and compute behind one API — multi-tenant by default. Ship the feature, not nine months of session plumbing. Forget about scaling AI sessions.
01 — The plumbing you don't want to build
Postgres + Redis + a queue + sandbox glue, and then: retries, rehydration, per-user scoping, model routing, state drift, runtime migration. It's nine to fifteen months of infrastructure that isn't your product. cerver gives that boundary one durable shape.
02 — One API
Every session is a transcript plus a harness plus (optionally) a compute. Three verbs cover it; the streaming and the message store are done.
$ curl -X POST https://gateway.cerver.ai/v2/sessions \
-H "authorization: Bearer $CERVER_TOKEN" \
-d '{"metadata":{"external_user_id":"<uuid>"}}'
→ { "session_id": "sess_42" }
# stream a turn — SSE back, transcript appended automatically
POST /v2/sessions/sess_42/run-llm { "input": "...", "model": "claude-sonnet-4-5" }
event: text_delta { "content": "Tok" }
event: text_delta { "content": "en…" }
event: done { "ok": true }
03 — Built for your tenants
Pass an external_user_id and cerver scopes the session, transcript, and listing to that user. Your customers never see each other's threads.
Switch provider — or migrate from a local machine to a cloud sandbox — mid-conversation, without losing the thread.
Every turn is durable. Read the tail, page by cursor, or download the full transcript whenever you need it.
04 — Talk to us
White-label, volume pricing, and dedicated support for platforms. Or start free and self-serve today.
curl -fsSL https://cerver.ai/install.sh | bash
cerver doesn't store your model/provider secrets — they live in your vault; cerver gets scoped runtime access and reports which provider was used.