Gateway CLI
The Gateway is Clawdbot’s WebSocket server (channels, nodes, sessions, hooks).
Subcommands in this page live under clawdbot gateway ….
Related docs:
Run the Gateway
Run a local Gateway process:
clawdbot gatewayForeground alias:
clawdbot gateway runNotes:
- By default, the Gateway refuses to start unless
gateway.mode=localis set in~/.openclaw-cn/openclaw-cn.json. Use--allow-unconfiguredfor ad-hoc/dev runs. - Binding beyond loopback without auth is blocked (safety guardrail).
SIGUSR1triggers an in-process restart when authorized (enablecommands.restartor use the gateway tool/config apply/update).SIGINT/SIGTERMhandlers stop the gateway process, but they don’t restore any custom terminal state. If you wrap the CLI with a TUI or raw-mode input, restore the terminal before exit.
Options
--port \<port\>: WebSocket port (default comes from config/env; usually18789).--bind <loopback|lan|tailnet|auto|custom>: listener bind mode.--auth <token|password>: auth mode override.--token \<token\>: token override (also setsOPENCLAW_GATEWAY_TOKENfor the process).--password \<password\>: password override (also setsOPENCLAW_GATEWAY_PASSWORDfor the process).--tailscale <off|serve|funnel>: expose the Gateway via Tailscale.--tailscale-reset-on-exit: reset Tailscale serve/funnel config on shutdown.--allow-unconfigured: allow gateway start withoutgateway.mode=localin config.--dev: create a dev config + workspace if missing (skips BOOTSTRAP.md).--reset: reset dev config + credentials + sessions + workspace (requires--dev).--force: kill any existing listener on the selected port before starting.--verbose: verbose logs.--claude-cli-logs: only show claude-cli logs in the console (and enable its stdout/stderr).--ws-log <auto|full|compact>: websocket log style (defaultauto).--compact: alias for--ws-log compact.--raw-stream: log raw model stream events to jsonl.--raw-stream-path \<path\>: raw stream jsonl path.
Query a running Gateway
All query commands use WebSocket RPC.
Output modes:
- Default: human-readable (colored in TTY).
--json: machine-readable JSON (no styling/spinner).--no-color(orNO_COLOR=1): disable ANSI while keeping human layout.
Shared options (where supported):
--url \<url\>: Gateway WebSocket URL.--token \<token\>: Gateway token.--password \<password\>: Gateway password.--timeout \<ms\>: timeout/budget (varies per command).--expect-final: wait for a “final” response (agent calls).
Note: when you set --url, the CLI does not fall back to config or environment credentials. Pass --token or --password explicitly. Missing explicit credentials is an error.
gateway health
clawdbot gateway health --url ws://127.0.0.1:18789gateway status
gateway status shows the Gateway service (launchd/systemd/schtasks) plus an optional RPC probe.
openclaw-cn gateway status
openclaw-cn gateway status --jsonOptions:
--url \<url\>: override the probe URL.--token \<token\>: token auth for the probe.--password \<password\>: password auth for the probe.--timeout \<ms\>: probe timeout (default10000).--no-probe: skip the RPC probe (service-only view).--deep: scan system-level services too.
gateway probe
gateway probe is the “debug everything” command. It always probes:
- your configured remote gateway (if set), and
- localhost (loopback) even if remote is configured.
If multiple gateways are reachable, it prints all of them. Multiple gateways are supported when you use isolated profiles/ports (e.g., a rescue bot), but most installs still run a single gateway.
clawdbot gateway probe
clawdbot gateway probe --jsonRemote over SSH (Mac app parity)
The macOS app “Remote over SSH” mode uses a local port-forward so the remote gateway (which may be bound to loopback only) becomes reachable at ws://127.0.0.1:\<port\>.
CLI equivalent:
clawdbot gateway probe --ssh user@gateway-hostOptions:
--ssh \<target\>:user@hostoruser@host:port(port defaults to22).--ssh-identity \<path\>: identity file.--ssh-auto: pick the first discovered gateway host as SSH target (LAN/WAB only).
Config (optional, used as defaults):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call \<method\>
Low-level RPC helper.
clawdbot gateway call status
clawdbot gateway call logs.tail --params '{"sinceMs": 60000}'Manage the Gateway service
clawdbot gateway install
clawdbot gateway start
clawdbot gateway stop
clawdbot gateway restart
clawdbot gateway uninstallNotes:
gateway installsupports--port,--runtime,--token,--force,--json.- Lifecycle commands accept
--jsonfor scripting.
Discover gateways (Bonjour)
gateway discover scans for Gateway beacons (_clawdbot-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour):
clawdbot.internal.(requires split DNS + DNS server; see /gateway/bonjour)
Only gateways with Bonjour discovery enabled (default) advertise the beacon.
Wide-Area discovery records include (TXT):
role(gateway role hint)transport(transport hint, e.g.gateway)gatewayPort(WebSocket port, usually18789)sshPort(SSH port; defaults to22if not present)tailnetDns(MagicDNS hostname, when available)gatewayTls/gatewayTlsSha256(TLS enabled + cert fingerprint)cliPath(optional hint for remote installs)
gateway discover
clawdbot gateway discoverOptions:
--timeout \<ms\>: per-command timeout (browse/resolve); default2000.--json: machine-readable output (also disables styling/spinner).
Examples:
clawdbot gateway discover --timeout 4000
clawdbot gateway discover --json | jq '.beacons[].wsUrl'