cerveau docs site github
Interfaces

HTTP API

Everything the panel does, it does over this API. Forty-five routes on 127.0.0.1:7700, JSON in and out, one SSE stream for live session events.

Unauthenticated on localhost There is no auth on the loopback interface, and Autopilot can run shell commands. Treat access to this port as equivalent to shell access. Once remote_access_token is set, every route requires a bearer token plus a device signature — see Pocket.

Sessions

GET/api/sessions

List sessions with their id, name, mode, workspace and timestamps.

POST/api/sessions

Create a session. Body carries the name, mode and workspace. Returns the new id.

POST/api/sessions/instant

Create a scratch session. Instant sessions never promote to long-term semantic memory and are swept after 24 hours idle.

PATCH/api/sessions/{id}

Update a session in place — rename it, change its mode.

DELETE/api/sessions/{id}

Delete a session and its episodic log.

GET/api/sessions/{id}/delete-preview

What deleting it would remove, before you commit to it.

Driving a turn

POST/api/sessions/{id}/chat

Send a message. The reply arrives on the stream, not in this response — this returns once the turn is accepted.

POST/api/sessions/{id}/autopilot

Start an autopilot run against the session's committed plan.

POST/api/sessions/{id}/steer

Redirect a run that is already in flight without killing it.

POST/api/sessions/{id}/pause

Pause after the current tool call completes.

POST/api/sessions/{id}/kill

Stop the run now.

POST/api/sessions/{id}/rewind

Rewind the session to an earlier point in its event log.

POST/api/sessions/{id}/answer

Answer a question the agent asked with ask_user. The blocked turn resumes.

GET/api/sessions/{id}/question

The question currently waiting, if any.

Live events

GET/api/sessions/{id}/stream

Server-sent events. Each event is one line of JSON from the episodic log:

: waiting for sess_abc

data: {"type":"assistant.delta","content":"Two failures, both in…"}

data: {"type":"tool.start","name":"bash","args":{"command":"go test ./..."}}

data: {"type":"tool.end","name":"bash","evt_id":"evt_000123","status":"ok"}

The stream opens immediately with a comment line and polls for the session, so a client can connect before the session has produced anything. It never closes on its own — disconnect to stop.

GET/api/sessions/{id}/events

The episodic log as a whole, for replaying a session on load.

POST/api/sessions/{id}/events

Append an event. This is how a client records something into the log.

GET/api/sessions/{id}/state

Current state: running or idle, mode, the window report, the active plan.

GET/api/sessions/{id}/errors

Errors from this session, as the cards the panel renders.

GET/api/sessions/{id}/report

The plan report: steps, what is done, what failed, whether it handed back.

GET/api/sessions/{id}/usage

Token usage for the session.

cached_tokens is always 0 on vLLM vLLM 0.27.1 does not report cached prompt tokens, so cached_tokens and cache_hit_rate stay zero even though prefix caching is on and working. Not a bug in either side.

Memory

GET/api/memory/list

Everything in the semantic store.

Search it the way the agent does — hybrid if the embedder is up, keyword otherwise.

GET/api/memory/graph

The relationship graph the panel renders as nodes and edges.

GET/api/memory/provenance/{id}

Where a fact came from: the originating event, and what it superseded.

GET/api/memory/review

Promotion candidates awaiting a decision.

POST/api/memory/review/{id}

Accept or reject a candidate.

Cores and sampling

GET/api/cores

Available Cores and which one is selected. See Brain Cores.

POST/api/cores/select

Switch Core. Do this at a task boundary, never mid-turn.

GET/api/sampling
POST/api/sampling

Read and set the sampling preset at runtime.

Workspace and files

POST/api/config/workspace

Change the workspace. The file-tool jail, the code index and the guard's rm boundary all re-anchor.

POST/api/config/pick-workspace

Open the native folder picker. Linux only today.

GET/api/fs/list

List a directory, for the picker and the file tree.

POST/api/files/probe

Check paths before acting on them.

POST/api/codegraph/index

Build or rebuild the code index. See Code intelligence.

RFX packs

GET/api/rfx

Installed packs and their state.

GET/api/rfx/panel/{pack}

A pack's custom panel, served into the sandboxed iframe.

POST/api/rfx/run

Run a reflex.

POST/api/rfx/toggle

Enable or disable a pack.

Devices

GET/api/devices

Registered devices: id, when added, when last seen.

POST/api/devices/revoke

Revoke a device. The machine stops answering it immediately, and revocation cascades to devices it vouched for.

System

GET/api/health

Component readiness. Polled by the panel roughly every five seconds.

{
  "components": [
    {"name":"model", "url":"http://localhost:8080", "ok":true, "detail":""},
    {"name":"typesense", "url":"http://localhost:8108", "ok":true}
  ],
  "workspace": "/home/you/projects/thing",
  "modes": ["discussion","brainstorming","autopilot"]
}
GET/api/system/stats

Hardware readout: GPU, VRAM, CPU, RAM. What the panel's status orb shows.

GET/api/skills

Available skills and their triggers. See Skills.

Notes for clients