You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The local engine already has a durable CLI queue and #30 defines the OpenClaw typed-tool contract. The missing product surface is a small authenticated HTTP boundary that a gateway can call and that a phone client can reconnect to safely.
Scope
Provide a minimal REST plus Server-Sent Events (SSE) API. REST handles commands; SSE handles reconnectable progress/events. WebSocket is explicitly out of scope for the first version.
MVP endpoints
POST /v1/jobs - submit a request using a project id and idempotency key.
GET /v1/jobs/{id} - compact status, budget and outcome.
GET /v1/jobs/{id}/events?cursor=... - replayable lifecycle events.
POST /v1/jobs/{id}/cancel - cooperative cancellation.
POST /v1/jobs/{id}/approval - approve or deny a pending decision.
GET /v1/jobs/{id}/artifacts - authenticated branch, diff, log and preview references.
Context
The local engine already has a durable CLI queue and #30 defines the OpenClaw typed-tool contract. The missing product surface is a small authenticated HTTP boundary that a gateway can call and that a phone client can reconnect to safely.
Scope
Provide a minimal REST plus Server-Sent Events (SSE) API. REST handles commands; SSE handles reconnectable progress/events. WebSocket is explicitly out of scope for the first version.
MVP endpoints
POST /v1/jobs- submit a request using a project id and idempotency key.GET /v1/jobs/{id}- compact status, budget and outcome.GET /v1/jobs/{id}/events?cursor=...- replayable lifecycle events.POST /v1/jobs/{id}/cancel- cooperative cancellation.POST /v1/jobs/{id}/approval- approve or deny a pending decision.GET /v1/jobs/{id}/artifacts- authenticated branch, diff, log and preview references.Acceptance criteria
Relationship
This is the transport implementation for the MVP. It depends on #29 and #44 and is consumed by #30.