Gateway demo. Server-side proxy to the Gateway as an external client (not the Control UI) — see web/server.mjs.
Sessions running now or ended in the last 10 minutes, from
GET /api/activity. Refreshes every 5 seconds.
Read-only: agents are the only writer of
~/.singleintent/backlog.json (their own file tools
directly, no API, no locking — see
~/.singleintent/backlog.README.md). This just displays its
current contents.
Creates an agent with a distinct workspace under the active OpenClaw profile, then onboards it with the instructions below. Project selection controls project access only; it does not choose or contain the workspace. A workspace is a working directory, not a sandbox or security boundary. To create an agent without onboarding, use Register Bot below.
Project selection records project access; workspace is assigned separately under the active OpenClaw profile as workspace-<agentId>. Workspace is not a sandbox or security boundary.
CRUD only for now — sending a template to an agent is a separate follow-up, not built here.
Sends via chat.send, then waits for the run to finish and shows the actual reply — not just the ack.
Applies a template to an agent by sending it as an instruction to remember, once, ever — this is a one-way binding like project scoping: no re-applying, no changing an agent's role later. To change a role, delete the agent and create a new one.
Points the "from" agent at the "to" agent and asks it to introduce itself using its own agent-to-agent tooling (sessions_send) — the human sets up who connects, agents handle the actual exchange themselves.
A real, persistent WebSocket to this server for the conversation's duration (not the request/response pattern every other section above uses) — one Gateway connection stays open per chat, streaming live replies back as they happen. See web/server.mjs's /ws/chat handler.
Read-only live view of an agent's tool calls, from the /ws/activity relay (web/server.mjs, lib/joylabs-activity-relay.js). Only calls made while watching appear; this is not a history.
Health and Gateway restart, from GET /api/system/health and
POST /api/system/restart (web/server.mjs, which spawns
scripts/system-health.mjs and scripts/system-restart.mjs). Health is
data, not a pass/fail: degraded is a normal reading.
Restart answers 202 at acceptance — the response does
not mean the Gateway came back. The job below is polled until it reaches
a terminal state; a new Gateway is proven by
/startupz reporting an uptime shorter than the time since
the request, not by the port answering.