From 1d0a536ecdd863d67215dd7b5facb1ce4f37e917 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 10 May 2026 04:07:12 +0100 Subject: [PATCH] docs(signal): clarify container mode behavior --- docs/channels/signal.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/channels/signal.md b/docs/channels/signal.md index 7b2bb88911f..1bc20c64c99 100644 --- a/docs/channels/signal.md +++ b/docs/channels/signal.md @@ -229,6 +229,15 @@ The `apiMode` field controls which protocol OpenClaw uses: When `apiMode` is `"auto"`, OpenClaw caches the detected mode for 30 seconds to avoid repeated probes. Container receive is only selected for streaming after `/v1/receive/{account}` upgrades to WebSocket, which requires `MODE=json-rpc`. +Container mode supports the same Signal channel operations as native mode where the container exposes matching APIs: sends, receives, attachments, typing indicators, read/viewed receipts, reactions, groups, and styled text. OpenClaw translates its native Signal RPC calls into the container's REST payloads, including `group.{base64(internal_id)}` group IDs and `text_mode: "styled"` for formatted text. + +Operational notes: + +- Use `autoStart: false` with container mode. OpenClaw should not spawn a native daemon when `apiMode: "container"` is selected. +- Use `MODE=json-rpc` for receiving. `MODE=normal` can make `/v1/about` look healthy, but `/v1/receive/{account}` does not WebSocket-upgrade, so OpenClaw will not select container receive streaming in `auto` mode. +- Set `apiMode: "container"` when you know the `httpUrl` points at bbernhard's REST API. Set `apiMode: "native"` when you know it points at native `signal-cli` JSON-RPC/SSE. Use `"auto"` when the deployment may vary. +- Container attachment downloads honor the same media byte limits as native mode. Oversized responses are rejected before being fully buffered when the server sends `Content-Length`, and while streaming otherwise. + ## Access control (DMs + groups) DMs: