Skip to main content
The plugin reads configuration from channels.openclaw-simplex.

Minimal config

{
  "channels": {
    "openclaw-simplex": {
      "enabled": true,
      "connection": {
        "wsUrl": "ws://127.0.0.1:5225"
      }
    }
  }
}

Single-account config

If accounts is not set, the root channels.openclaw-simplex object acts as the default account config.
{
  "channels": {
    "openclaw-simplex": {
      "enabled": true,
      "name": "SimpleX",
      "actions": {
        "reactions": true,
        "polls": true
      },
      "reactionLevel": "minimal",
      "dmPolicy": "pairing",
      "contextVisibility": "allowlist",
      "allowFrom": ["*"],
      "groupPolicy": "allowlist",
      "groupAllowFrom": [],
      "mediaMaxMb": 5,
      "messageTtlSeconds": 86400,
      "streaming": {
        "nativeTransport": false,
        "throttleMs": 2000,
        "minChars": 24,
        "wordBoundary": true
      },
      "filePolicy": {
        "autoAccept": true,
        "maxSizeMb": 5
      },
      "connection": {
        "wsUrl": "ws://127.0.0.1:5225",
        "connectTimeoutMs": 15000
      }
    }
  }
}

Multi-account config

If accounts is set, each account entry can override the shared root config. This is the model to use when different SimpleX identities or runtimes should map to different OpenClaw channel accounts.
{
  "channels": {
    "openclaw-simplex": {
      "enabled": true,
      "dmPolicy": "pairing",
      "groupPolicy": "allowlist",
      "connection": {
        "wsUrl": "ws://127.0.0.1:5225"
      },
      "accounts": {
        "ops": {
          "name": "Ops",
          "enabled": true,
          "reactionLevel": "extensive",
          "contextVisibility": "allowlist",
          "allowFrom": ["alice", "bob"],
          "connection": {
            "wsUrl": "ws://127.0.0.1:7777"
          }
        }
      }
    }
  }
}

Field reference

FieldMeaning
enabledMaster toggle for the channel or account.
nameOptional display name for an account.
actions.reactionsEnable or disable agent reaction actions for this channel/account.
actions.pollsEnable or disable poll-style message actions for this channel/account.
reactionLevelAgent reaction behavior: off | ack | minimal | extensive.
dmPolicyDirect-message policy: open | allowlist | pairing | disabled. Effective default: pairing.
contextVisibilityOpenClaw supplemental context visibility mode for the channel/account: all | allowlist | allowlist_quote. Use this when you want tighter control over what extra context the channel may expose to agent runs.
allowFromDM allowlist entries.
dmHistoryLimitOptional per-DM history limit.
dmsPer-DM config overrides using OpenClaw’s shared DM config schema.
groupPolicyGroup-message policy: open | allowlist | disabled.
groupAllowFromGroup allowlist entries.
groups.<groupId>.requireMentionWhether a group message must mention the bot before it is handled.
groups.<groupId>.toolsPer-group tool policy using OpenClaw’s shared tool policy schema.
mediaMaxMbMaximum accepted/uploaded media size in MB.
markdownMarkdown rendering config from OpenClaw’s shared channel schema.
blockStreamingIf true, buffer the response instead of streaming partial output.
blockStreamingCoalesceOptional response coalescing behavior for blocked streaming.
streaming.nativeTransportEnables SimpleX-native live assistant text replies. Disabled by default so intermediate assistant text is not exposed unless explicitly enabled.
streaming.throttleMsMinimum delay between SimpleX live message edits. Default: 2000.
streaming.minCharsMinimum added characters before a SimpleX live message update is sent. Default: 24.
streaming.wordBoundaryPrefer live updates at word boundaries. Default: true.
messageTtlSecondsOptional SimpleX message time-to-live applied to outbound text, media, poll, action, and reply sends for this account.
filePolicy.autoAcceptPreferred file auto-accept setting. If omitted, the legacy connection.autoAcceptFiles setting is used.
filePolicy.maxSizeMbOperator-facing receive-side file size policy for diagnostics.
experimentalChannelsEnables capability-gated parsing for SimpleX channel-like targets such as channel:<id> and !<id>. This does not claim full SimpleX Channels support.
connection.modeConnection mode. Only external is supported.
connection.wsUrlWebSocket URL for the running simplex-chat WebSocket API. If set, this wins over wsHost/wsPort.
connection.wsHostOptional host fallback when wsUrl is not set. Default: 127.0.0.1.
connection.wsPortOptional port fallback when wsUrl is not set. Default: 5225.
connection.allowUnsafeRemoteWsAllow plaintext remote WebSocket endpoints. Keep this false unless the endpoint is protected by a private network, firewall, or authenticated TLS proxy.
connection.autoAcceptFilesWhether incoming file transfers should be auto-accepted by the SimpleX runtime.
connection.connectTimeoutMsWebSocket connection timeout in milliseconds.
connection.commandTimeoutMsDefault SimpleX WebSocket command timeout in milliseconds.
connection.directoryTimeoutMsShorter timeout for advisory contact and group directory lookups.
accounts.<accountId>Per-account overrides for the same schema.
A channel/account is considered configured only when connection.wsUrl, connection.wsHost, or connection.wsPort is present. If none of those are set, OpenClaw will not treat the channel as startup-ready.
SimpleX-native live replies apply only to assistant text previews and final text. Media, polls, and explicit message actions continue to use normal SimpleX sends. If a live update fails or a payload contains media, the plugin falls back to normal delivery.

What belongs in plugin config vs runtime startup

This plugin talks to an already running external simplex-chat process. That means the OpenClaw config only models settings the plugin can truthfully use at runtime.

Good fit for plugin config

  • connection.wsUrl, wsHost, wsPort
  • connection.allowUnsafeRemoteWs
  • connection.connectTimeoutMs, connection.commandTimeoutMs, and connection.directoryTimeoutMs
  • connection.autoAcceptFiles
  • streaming.nativeTransport, streaming.throttleMs, streaming.minChars, and streaming.wordBoundary
  • messageTtlSeconds and filePolicy
  • OpenClaw policy and UX settings such as dmPolicy, allowFrom, groupPolicy, contextVisibility, actions, and reactionLevel

Intentionally not mirrored into plugin config

These are primarily simplex-chat startup or environment flags, so they belong in the host-managed service command line, not in channels.openclaw-simplex:
  • transport/bootstrap: —server, —xftp-server, —socks-proxy, —socks-mode, —host-mode, —required-host-mode, —smp-proxy, —smp-proxy-fallback, —smp-web-port
  • local process/file layout: -d/—database, -k/—key, —files-folder, —temp-folder, —log-file
  • runtime process behavior: —device-name, —maintenance, —mute, —mark-read, —reactions, —create-bot-display-name
Those flags can still be valuable, but the right place to set them is the supervised simplex-chat service definition described in Runtime Setup.