Openclaw节点
除了Openclaw gateway外,openclaw还有节点,网关和节点的区别如下:
openclaw gateway(网关)
- 是主服务,运行在你的机器上
- 管理:工具调用、权限控制、cron定时任务、内存记忆、会话路由
openclaw gateway start/stop就是控制它- 它是唯一能调用 exec、cron、memory、sessions 等核心工具的“大脑”
openclaw node (节点)
- 可以是本地子进程(比如你 spawn 的一个 subagent)
- 也可以是远程节点(未来支持分布式时,比如另一台机器)
- 它不能独立运行,必须由 Gateway 指挥
- 比如你用
sessions_spawn创建的 ACP 编码会话,就是一个“节点”
总结:网关下发命令,节点干活
远程节点
opencalw节点使用的也是跟网关同样的一个安装包,只是启动的时候是通过节点模式来启动的而已,这里演示通过docker容器方式来启动节点,并连接到gateway
1、首先创建本地映射目录,把容器内部的目录映射出来,如下:
mkdir -p /data/openclaw && chown 1000:1000 openclaw
2、编辑docker.sh的脚本,这里的openclaw为openclaw:4.14内容如下:
#!/bin/bash
GATEWAY_HOME="192.168.49.244"
GATEWAY_TOKEN="ba6de6aa02328ed45dba2579d20f1621bda212fe75ef37a5"
docker run -d \
--name openclaw-node \
--restart unless-stopped \
-v /data/openclaw:/home/node/.openclaw \
-e OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
-e OPENCLAW_GATEWAY_TOKEN="$GATEWAY_TOKEN" \
ghcr.io/openclaw/openclaw:latest \
openclaw node run \
--host ${GATEWAY_HOME} \
--port 18789 \
--display-name "gateway-node-02"
- GATEWAY_HOME: openclaw gateway的IP地址(主服务地址,有域名就用域名)
- GATEWAY_TOKEN: 连接gateway需要的TOKEN,gateway配置openclaw.json中auth.token的值
- OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:允许在私有内网(非公网)中使用明文 WebSocket (
ws://) 连接,绕过系统默认的安全检查 - display-name:自定义节点名字
运行起来后,查看openclaw-node日志,可以看到出现批准请求,也就是需要gateway批准加入才行

3、在openclaw gateway端查看批准请求,如下:
openclaw devices list

查看已批准后的节点状态,如下:
openclaw nodes status

4、测试下gateway网关发送命令给节点去执行
要让 OpenClaw Gateway 给节点(Node)下发命令,核心是通过 openclaw nodes run或 openclaw nodes invoke命令,通过 Gateway 的 WebSocket RPC 调用节点的 system.run能力。以下是具体步骤和关键点:
- 节点类型:目标节点必须是 macOS 伴侣应用(Companion App)或无头节点主机(Headless Node Host)
- 能力支持:节点需对外提供
system.run能力 - 配对状态:节点已连接到 Gateway 并完成配对审批(使用
openclaw nodes approve)
执行命令获取下gateway-node-02节点的磁盘信息,如下:
openclaw nodes run --node gateway-node-02 "df -h"
报错:
nodes run failed: GatewayClientRequestError: INVALID_REQUEST: SYSTEM_RUN_DENIED: approval requires a stable executable path
这个错误表明 OpenClaw 的安全策略正在发挥作用,使用的命令里包含了一个无法被解析为真实绝对路径的程序名(例如,一个只在 PATH环境变量里的名字,如 ls或 python),这在新策略下是不被允许的,推荐使用绝对路径,如下:
openclaw nodes run --node gateway-node-02 "/usr/bin/df -h"
还是报上面的错误,这通常是因为节点的执行审批(Exec Approvals)策略尚未对该路径放行。自 2026.3.x 版本起,OpenClaw 强制要求路径匹配和审批,仅提供路径不足以绕过安全检查,节点主机的 exec-approvals.json策略目前很可能处于默认的 allowlist(白名单)模式。由于 /usr/bin/df不在白名单中,且你没有设置自动放行,系统因找不到匹配的审批规则而拒绝执行,查看当前审批状态,如下:
openclaw approvals get --node gateway-node-02



