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.

Use this page after the first setup is already working and you want to make the SimpleX runtime persistent or split multiple accounts across separate runtimes. For the first install and pairing flow, start with Getting Started.

Keep simplex-chat running

If you want the SimpleX runtime to start automatically on login or machine boot, let the host OS supervise it and keep OpenClaw focused on the channel connection itself.

Decide which settings go where

Use this rule:
  • put OpenClaw channel behavior in channels.openclaw-simplex
  • put simplex-chat process startup flags in the supervised service command line
Plugin-side settings:
  • connection.wsUrl
  • connection.connectTimeoutMs
  • connection.autoAcceptFiles
  • dmPolicy, allowFrom, groupPolicy
Runtime-side startup flags:
  • relay and proxy selection: —server, —xftp-server, —socks-proxy, —host-mode, —smp-proxy
  • local storage/layout: —database, —files-folder, —temp-folder, —log-file
  • runtime process behavior: —device-name, —maintenance, —mute, —mark-read

Create the service

mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/simplex-chat.service <<'EOF'
[Unit]
Description=SimpleX Chat WebSocket Runtime
After=network-online.target

[Service]
ExecStart=%h/.local/bin/simplex-chat -p 5225 --device-name "OpenClaw SimpleX" --files-folder %h/.simplex/files --temp-folder %h/.simplex/tmp
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
EOF
Adjust the ExecStart path if simplex-chat is installed somewhere other than %h/.local/bin/simplex-chat. The extra flags above are examples of runtime-owned settings that do not belong in OpenClaw channel config.

Start it

systemctl --user daemon-reload
systemctl --user enable --now simplex-chat.service

Check status

systemctl --user status simplex-chat.service
Expected result: the service status should be active (running).

Common startup flag patterns

These are reasonable patterns to consider when you run simplex-chat as an external service:
  • fixed local identity label: —device-name “OpenClaw SimpleX”
  • explicit file locations: —files-folder ~/.simplex/files —temp-folder ~/.simplex/tmp
  • custom relay policy: —server “smp1.example.com smp2.example.com” —xftp-server “xftp1.example.com”
  • SOCKS/Tor routing: —socks-proxy :9050 —host-mode onion —required-host-mode
  • stricter message routing: —smp-proxy always —smp-proxy-fallback no
Do not copy every CLI flag into the service blindly. Flags such as proxy mode, relay selection, maintenance mode, and custom database paths materially change runtime behavior and should be chosen deliberately for your deployment.

Maintenance mode

If you need to bring up the runtime without immediately serving chat traffic, run it with —maintenance and start chat manually inside the runtime later. This is a simplex-chat operational mode, not an OpenClaw channel config field, so it belongs in the service command only when you intentionally want that behavior.