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.
remote_access_token is set, every route requires a bearer token plus a device signature — see Pocket.
Sessions
List sessions with their id, name, mode, workspace and timestamps.
Create a session. Body carries the name, mode and workspace. Returns the new id.
Create a scratch session. Instant sessions never promote to long-term semantic memory and are swept after 24 hours idle.
Update a session in place — rename it, change its mode.
Delete a session and its episodic log.
What deleting it would remove, before you commit to it.
Driving a turn
Send a message. The reply arrives on the stream, not in this response — this returns once the turn is accepted.
Start an autopilot run against the session's committed plan.
Redirect a run that is already in flight without killing it.
Pause after the current tool call completes.
Stop the run now.
Rewind the session to an earlier point in its event log.
Answer a question the agent asked with ask_user. The blocked turn resumes.
The question currently waiting, if any.
Live events
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.
The episodic log as a whole, for replaying a session on load.
Append an event. This is how a client records something into the log.
Current state: running or idle, mode, the window report, the active plan.
Errors from this session, as the cards the panel renders.
The plan report: steps, what is done, what failed, whether it handed back.
Token usage for the session.
cached_tokens and cache_hit_rate stay zero even though prefix caching is on and working. Not a bug in either side.
Memory
Everything in the semantic store.
Search it the way the agent does — hybrid if the embedder is up, keyword otherwise.
The relationship graph the panel renders as nodes and edges.
Where a fact came from: the originating event, and what it superseded.
Promotion candidates awaiting a decision.
Accept or reject a candidate.
Cores and sampling
Available Cores and which one is selected. See Brain Cores.
Switch Core. Do this at a task boundary, never mid-turn.
Read and set the sampling preset at runtime.
Workspace and files
Change the workspace. The file-tool jail, the code index and the guard's rm boundary all re-anchor.
Open the native folder picker. Linux only today.
List a directory, for the picker and the file tree.
Check paths before acting on them.
Build or rebuild the code index. See Code intelligence.
RFX packs
Installed packs and their state.
A pack's custom panel, served into the sandboxed iframe.
Run a reflex.
Enable or disable a pack.
Devices
Registered devices: id, when added, when last seen.
Revoke a device. The machine stops answering it immediately, and revocation cascades to devices it vouched for.
System
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"]
}
Hardware readout: GPU, VRAM, CPU, RAM. What the panel's status orb shows.
Available skills and their triggers. See Skills.
Notes for clients
- Static assets and
/api/healthstay open even when a token is set, so a panel can render its lock screen. - The stream is the only long-lived connection. Everything else is request/response.
- Session ids are opaque. Do not parse them.
- This is alpha. Routes will change between releases; the panel and the API ship together for that reason.