openclaw node
Запустите безголовый хост Node, который подключается к WebSocket Gateway и предоставляет
system.run / system.which на этом компьютере.
В macOS приложение в строке меню уже встраивает эту среду выполнения хоста Node в собственное
подключение Node и добавляет нативные возможности Mac. Используйте openclaw node run на
Mac, только если вам намеренно нужен безголовый Node без приложения. Одновременный запуск
обоих вариантов создаёт две идентичности Node для одного компьютера.
Зачем использовать хост Node?
Используйте хост Node, если требуется, чтобы агенты выполняли команды на других компьютерах в вашей сети без установки на них полноценного вспомогательного приложения для macOS. Типичные сценарии использования:- Выполнение команд на удалённых компьютерах Linux/Windows (серверах сборки, лабораторных машинах, NAS).
- Сохранение изолированного выполнения на Gateway с делегированием одобренных запусков другим хостам.
- Предоставление облегчённой безголовой цели выполнения для автоматизации или узлов CI.
openclaw node run может публиковать инструменты на базе плагинов или MCP.
По умолчанию Gateway доверяет дескрипторам от сопряжённого Node, но требует,
чтобы команда каждого дескриптора оставалась в пределах одобренной поверхности команд Node. Агент
видит каждый принятый дескриптор как обычный инструмент плагина, но выполнение по-прежнему
проходит через node.invoke, поэтому отключение Node удаляет инструмент из новых
запусков агента. Операторы Gateway могут отключить публикацию с помощью
gateway.nodes.pluginTools.enabled: false.
Для декларативных инструментов MCP добавьте обычную конфигурацию сервера MCP в
nodeHost.mcp.servers в openclaw.json на компьютере Node, затем перезапустите
хост Node. Node объявляет защищённое одобрениями семейство команд mcp.tools.call.v1
и после подключения публикует перечисленные инструменты; последующее изменение списка серверов
не требует повторного сопряжения. См.
Серверы MCP на хосте Node.
Прокси браузера (без настройки)
Хосты Node автоматически объявляют прокси браузера, еслиbrowser.enabled не
отключён на Node. Это позволяет агенту использовать автоматизацию браузера на этом Node
без дополнительной настройки.
По умолчанию прокси предоставляет обычную поверхность профилей браузера Node. Если
задать nodeHost.browserProxy.allowProfiles, прокси перейдёт в ограничительный режим:
обращение к профилям вне списка разрешений будет отклоняться, а маршруты создания и удаления
постоянных профилей через прокси будут заблокированы.
При необходимости отключите его на Node:
Запуск (на переднем плане)
--host <host>: хост WebSocket Gateway (по умолчанию:127.0.0.1)--port <port>: порт WebSocket Gateway (по умолчанию:18789)--context-path <path>: путь контекста WebSocket Gateway (например,/openclaw-gw). Добавляется к URL WebSocket.--tls: использовать TLS для подключения к Gateway--no-tls: принудительно использовать незашифрованное подключение к Gateway, даже если локальная конфигурация Gateway включает TLS--tls-fingerprint <sha256>: ожидаемый отпечаток сертификата TLS (sha256)--node-id <id>: переопределить идентификатор экземпляра клиента, хранящийся в общем состоянии SQLite (не сбрасывает сопряжение)--display-name <name>: переопределить отображаемое имя Node
Аутентификация Gateway для хоста Node
openclaw node run и openclaw node install получают данные аутентификации Gateway из конфигурации или переменных окружения (в командах Node нет флагов --token/--password):
- Сначала проверяются
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Затем используется резервный вариант из локальной конфигурации:
gateway.auth.token/gateway.auth.password. - В локальном режиме хост Node намеренно не наследует
gateway.remote.token/gateway.remote.password. - Если
gateway.auth.token/gateway.auth.passwordявно настроен через SecretRef и не разрешён, получение данных аутентификации Node завершается с запретом по умолчанию (без маскировки удалённым резервным вариантом). - В
gateway.mode=remoteполя удалённого клиента (gateway.remote.token/gateway.remote.password) также могут использоваться согласно правилам приоритета удалённых источников. - Получение данных аутентификации хоста Node учитывает только переменные окружения
OPENCLAW_GATEWAY_*.
ws://, допустимы loopback-адреса, литералы
частных IP-адресов, хосты .local и Tailnet *.ts.net. Для других
доверенных имён частного DNS задайте OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1; без
этого запуск Node завершится с запретом по умолчанию и предложит использовать wss://, туннель SSH или
Tailscale. Это явное согласие через окружение процесса, а не ключ конфигурации
openclaw.json.
openclaw node install сохраняет его в управляемой службе Node, если оно
присутствует в окружении команды установки.
Служба (в фоновом режиме)
Установите безголовый хост Node как пользовательскую службу (launchd в macOS, systemd в Linux, планировщик заданий Windows в Windows).--host <host>: хост WebSocket Gateway (по умолчанию:127.0.0.1)--port <port>: порт WebSocket Gateway (по умолчанию:18789)--context-path <path>: путь контекста WebSocket Gateway (например,/openclaw-gw). Добавляется к URL WebSocket.--tls: использовать TLS для подключения к Gateway--tls-fingerprint <sha256>: ожидаемый отпечаток сертификата TLS (sha256)--node-id <id>: переопределить идентификатор экземпляра клиента, хранящийся в общем состоянии SQLite (не сбрасывает сопряжение)--display-name <name>: переопределить отображаемое имя Node--runtime <runtime>: среда выполнения службы (node)--force: переустановить или перезаписать, если уже установлено
openclaw node run для запуска хоста Node на переднем плане (без службы).
Команды службы принимают --json для вывода в машиночитаемом формате.
Хост Node повторно подключается после перезапуска Gateway и закрытия сетевого соединения в рамках процесса. Если
Gateway сообщает о терминальной приостановке аутентификации по токену, паролю или начальной настройке, хост Node
записывает сведения о закрытии в журнал и завершается с ненулевым кодом, чтобы launchd/systemd/планировщик заданий
мог перезапустить его со свежей конфигурацией и учётными данными. Приостановки из-за необходимости сопряжения остаются
в потоке на переднем плане, чтобы ожидающий запрос можно было одобрить.
Сопряжение
При первом подключении на Gateway создаётся ожидающий запрос на сопряжение устройства (role: node).
Если хост Gateway может подключиться к хосту Node по SSH без взаимодействия с пользователем (тот же пользователь,
доверенный ключ хоста), ожидающий запрос одобряется автоматически: Gateway
запускает openclaw node identity --json на хосте Node через SSH и одобряет запрос при
точном совпадении ключа устройства. По умолчанию это включено; требования и способ отключения
(gateway.nodes.pairing.sshVerify: false) см. в разделе
Автоматическое одобрение устройства с проверкой по SSH.
В противном случае одобрите вручную:
identity/device.json и никогда
не создаёт и не изменяет файлы идентичности.
В строго контролируемых сетях Node оператор Gateway может явно включить
автоматическое одобрение первого сопряжения Node из доверенных CIDR:
autoApproveCidrs не задан). Это применяется только к
новому сопряжению role: node без запрошенных областей доступа с IP-адреса клиента,
которому доверяет Gateway. Клиенты оператора и браузера, Control UI, WebChat, а также обновления роли,
областей доступа, метаданных или открытого ключа по-прежнему требуют ручного одобрения.
Если Node повторяет сопряжение с изменёнными данными аутентификации (ролью, областями доступа или открытым ключом),
предыдущий ожидающий запрос заменяется и создаётся новый requestId.
Перед одобрением снова выполните openclaw devices list.
Состояние идентичности и сопряжения
Безголовый Node отделяет идентификатор экземпляра клиента от подписанной идентичности устройства, которую Gateway использует для сопряжения и маршрутизации. Это состояние хранится в каталоге состояния OpenClaw (~/.openclaw по умолчанию или $OPENCLAW_STATE_DIR,
если задано):
--node-id изменяет только идентификатор экземпляра клиента в общем состоянии SQLite. Он
не изменяет криптографический идентификатор устройства и не очищает данные аутентификации сопряжения. Перенос устаревшего
node.json с помощью openclaw doctor --fix также не сбрасывает сопряжение. Чтобы
отозвать и повторно сопрячь Node:
- На Gateway выполните
openclaw nodes remove --node <id|name|ip>. - На Node перезапустите установленную службу с помощью
openclaw node restartлибо остановите и повторно выполните команду переднего планаopenclaw node run. Это запустит процесс сопряжения устройства. Еслиopenclaw devices listне показывает запрос, а Node сообщаетAUTH_DEVICE_TOKEN_MISMATCH, перезапустите или повторно запустите его ещё раз. Отклонённая попытка очищает отозванный локальный токен; следующая попытка сможет запросить сопряжение. - На Gateway выполните
openclaw devices list, затемopenclaw devices approve <deviceRequestId>. - Снова перезапустите или повторно запустите Node. Клиент, приостановленный для сопряжения, не возобновляет работу автоматически после одобрения; это повторное подключение создаёт отдельный запрос поверхности команд.
- На Gateway выполните
openclaw nodes pending, затемopenclaw nodes approve <nodeRequestId>.
node.json и могли оставлять там
устаревшее поле token. Остановите хост Node и один раз выполните openclaw doctor --fix;
Doctor импортирует поддерживаемые поля идентичности и подключения в SQLite,
отбрасывает неиспользуемое поле токена, проверяет строку и удаляет устаревший файл.
Обычные команды Node завершаются с запретом по умолчанию и этой инструкцией по исправлению, пока файл или
прерванная операция Doctor остаются на месте. Сохраняйте конфиденциальность обоих файлов в identity/;
они содержат пару ключей устройства и токены аутентификации.
Одобрения exec
system.run контролируется локальными одобрениями exec:
$OPENCLAW_STATE_DIR/exec-approvals.jsonили~/.openclaw/exec-approvals.json, если переменная не задана- Одобрения exec
openclaw approvals --node <id|name|ip>(редактируется с Gateway)
systemRunPlan
до запроса одобрения. Последующая одобренная пересылка system.run повторно использует этот сохранённый
план, поэтому изменения полей команды, рабочего каталога или сеанса после создания запроса
на одобрение отклоняются и не могут изменить то, что выполняет Node.