Platform

WebSocket protocol

The JSON-RPC 2.0 contract between Studio and the daemon.

Transport is Laravel Reverb — the Pusher v7 WebSocket protocol over WSS — carrying a JSON-RPC 2.0 envelope. The daemon subscribes to one private channel per project; auth is a Sanctum-issued JWT.

Connection semantics

  • 30s heartbeat (pusher:pingpusher:pong).
  • Exponential-backoff reconnect: 1s, doubling, capped at 30s; resets on a healthy reconnect.
  • JSON-RPC 2.0 envelope: requests, responses and notifications.
  • JWT auth, per-channel per-project scope.

Channel events

  • Server → client: task.created, task.chunk, task.completed, task.failed, task.tool_call, task.tool_result, task.cancelled, task.revision, worker.report, team.spawn_request.
  • Client → server: client-task.create, client-task.cancel.

Error codes

Code Meaning
4001 auth required
4002 auth expired
4003 forbidden (project scope)
4101 rate limited
4201 task not found
4202 task state invalid