OpenClawSkills
GitHub
Reference β€’ TutorialHeader.readTime

RPC Adapters

RPC adapters for external CLIs (signal-cli, imsg) and gateway patterns

OpenClaw integrates external CLIs via JSON-RPC. Two patterns are used today.

Tutorial.step

Pattern A: HTTP daemon (signal-cli)

- signal-cli runs as a daemon with JSON-RPC over HTTP.

- Event stream is SSE (/api/v1/events).

- Health probe: /api/v1/check.

- OpenClaw owns lifecycle when channels.signal.autoStart=true.

See Signal for setup and endpoints.

Tutorial.step

Pattern B: stdio child process (imsg)

- OpenClaw spawns imsg rpc as a child process.

- JSON-RPC is line-delimited over stdin/stdout (one JSON object per line).

- No TCP port, no daemon required.

Core methods used:

- watch.subscribe β†’ notifications (method: "message")

- watch.unsubscribe

- send

- chats.list (probe/diagnostics)

See iMessage for setup and addressing (chat_id preferred).

Tutorial.step

Adapter guidelines

- Gateway owns process (start/stop tied to provider lifecycle).

- Keep RPC clients resilient: timeouts, restart on exit.

- Prefer stable IDs (e.g., chat_id) over display strings.