Skip to main content

Documentation Index

Fetch the complete documentation index at: https://openclaw-simplex.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The architecture is built around one rule: OpenClaw should enforce policy and route messages, but it should not own the simplex-chat process lifecycle for this plugin. That separation keeps the channel implementation explicit, makes host-level supervision a deployment choice, and avoids hiding the network/runtime boundary inside plugin startup code.

High-level diagram

            +-------------------------+
            |        OpenClaw         |
            |  (agent + router/core)  |
            | - policy enforcement    |
            +------------+------------+
                         |
                         | channel plugin API
                         v
            +-------------------------+
            | @dangoldbj/openclaw-    |
            |        simplex          |
            | - inbound monitor       |
            | - outbound translation  |
            | - account/runtime state |
            +------------+------------+
                         |
                         | WebSocket API
                         v
            +-------------------------+
            |   SimpleX CLI Runtime   |
            |      (simplex-chat)     |
            +------------+------------+
                         |
                         | network
                         v
            +-------------------------+
            |      SimpleX Network    |
            +-------------------------+

Boundaries

Policy boundary

Access checks stay in OpenClaw through dmPolicy, allowFrom, groupPolicy, pairing state, and command authorization.

Runtime boundary

The plugin connects to a separately running simplex-chat instance over WebSocket instead of spawning or supervising that process.

Account boundary

Account-specific overrides live under channels.openclaw-simplex.accounts, while shared channel config remains at the channel root.

Failure isolation

If the SimpleX WebSocket endpoint is unavailable, this channel reports a runtime error and disconnect state without taking down unrelated OpenClaw channels.

Data flow

  1. simplex-chat emits events through its WebSocket API.
  2. The plugin monitor parses those events into OpenClaw channel context.
  3. OpenClaw applies policy checks and runs the agent.
  4. The plugin translates replies, edits, reactions, media sends, and group actions back into SimpleX commands.

Implementation surfaces

  • src/channel/simplex-monitor.ts: inbound SimpleX event parsing and message normalization.
  • src/channel/simplex-send.ts and src/channel/simplex-outbound.ts: outbound message/action translation.
  • src/simplex/simplex-ws-client.ts and src/simplex/simplex-transport.ts: WebSocket transport and command execution.
  • channels.openclaw-simplex and channels.openclaw-simplex.accounts: shared and per-account runtime config.