CLI commands
Gateway
Gateway — це WebSocket-сервер OpenClaw (канали, вузли, сесії, хуки). Підкоманди на цій сторінці розташовані під openclaw gateway ….
Налаштування локального mDNS + глобального DNS-SD.
Як OpenClaw оголошує про шлюзи й знаходить їх.
Ключі конфігурації gateway верхнього рівня.
Запуск Gateway
Запустіть локальний процес Gateway:
openclaw gateway
Псевдонім для запуску на передньому плані:
openclaw gateway run
Поведінка запуску
- За замовчуванням Gateway відмовляється запускатися, якщо
gateway.mode=localне задано в~/.openclaw/openclaw.json. Використовуйте--allow-unconfiguredдля разових/dev-запусків. - Очікується, що
openclaw onboard --mode localіopenclaw setupзаписуютьgateway.mode=local. Якщо файл існує, алеgateway.modeвідсутній, вважайте це пошкодженою або перезаписаною конфігурацією й виправте її, замість неявного припущення локального режиму. - Якщо файл існує, але
gateway.modeвідсутній, Gateway розцінює це як підозріле пошкодження конфігурації та відмовляється "вгадувати local" за вас. - Прив’язка поза loopback без автентифікації блокується (захисне обмеження).
SIGUSR1запускає перезапуск у межах процесу, коли це дозволено (commands.restartувімкнено за замовчуванням; задайтеcommands.restart: false, щоб заблокувати ручний перезапуск, водночас застосування/оновлення через інструмент/config gateway залишаються дозволеними).- Обробники
SIGINT/SIGTERMзупиняють процес gateway, але не відновлюють жоден кастомний стан термінала. Якщо ви обгортаєте CLI за допомогою TUI або введення в raw-mode, відновіть термінал перед виходом.
Параметри
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Порт WebSocket (значення за замовчуванням береться з config/env; зазвичай 18789).
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Перевизначення токена (також задає OPENCLAW_GATEWAY_TOKEN для процесу).
"--password"--tailscale--tailscale-reset-on-exitbooleanСкинути конфігурацію Tailscale serve/funnel під час завершення.
--allow-unconfiguredbooleanДозволити запуск gateway без gateway.mode=local у конфігурації. Обходить захист запуску лише для разового/dev bootstrap; не записує й не виправляє файл конфігурації.
--devbooleanСтворити dev config + робочий простір, якщо їх немає (пропускає BOOTSTRAP.md).
--resetbooleanСкинути dev config + облікові дані + сесії + робочий простір (потребує --dev).
--forcebooleanЗавершити будь-який наявний слухач на вибраному порту перед запуском.
--verbosebooleanДокладні журнали.
--cli-backend-logsbooleanПоказувати в консолі лише журнали backend CLI (і ввімкнути stdout/stderr).
"--ws-log--compactbooleanПсевдонім для --ws-log compact.
--raw-streambooleanЗаписувати сирі події потоку моделі в jsonl.
Перезапуск Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe просить запущений Gateway виконати попередню перевірку активної роботи OpenClaw перед перезапуском. Якщо активні операції в черзі, доставлення відповідей, вбудовані запуски або запуски завдань, Gateway повідомляє про блокувальники, об’єднує дубльовані запити безпечного перезапуску й перезапускається після завершення активної роботи. Звичайний restart зберігає наявну поведінку менеджера сервісів для сумісності. Використовуйте --force лише тоді, коли явно хочете негайний шлях примусового перевизначення.
Профілювання запуску
- Задайте
OPENCLAW_GATEWAY_STARTUP_TRACE=1, щоб записувати в журнал таймінги фаз під час запуску Gateway, включно із затримкоюeventLoopMaxдля кожної фази та таймінгами таблиць пошуку plugin для installed-index, реєстру manifest, планування запуску й роботи owner-map. - Задайте
OPENCLAW_DIAGNOSTICS=timelineізOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>, щоб записати best-effort JSONL timeline діагностики запуску для зовнішніх QA harnesses. Також можна ввімкнути прапорець черезdiagnostics.flags: ["timeline"]у конфігурації; шлях все одно надається через env. ДодайтеOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1, щоб включити вибірки event-loop. - Запустіть
pnpm test:startup:gateway -- --runs 5 --warmup 1, щоб виміряти швидкодію запуску Gateway. Бенчмарк записує перший вивід процесу,/healthz,/readyz, таймінги трасування запуску, затримку event-loop і подробиці таймінгів таблиць пошуку plugin.
Запит до запущеного Gateway
Усі команди запитів використовують WebSocket RPC.
Режими виводу
- За замовчуванням: зручно для читання людиною (кольорове в TTY).
--json: машинозчитуваний JSON (без стилізації/spinner).--no-color(абоNO_COLOR=1): вимкнути ANSI, зберігаючи людське компонування.
Спільні параметри
--url <url>: WebSocket URL Gateway.--token <token>: токен Gateway.--password <password>: пароль Gateway.--timeout <ms>: тайм-аут/бюджет (залежить від команди).--expect-final: чекати на "final" відповідь (виклики агента).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789
HTTP endpoint /healthz — це liveness probe: він повертає відповідь, щойно сервер може відповідати через HTTP. HTTP endpoint /readyz суворіший і залишається червоним, поки startup plugin sidecars, канали або налаштовані хуки ще стабілізуються. Локальні або автентифіковані докладні відповіді готовності містять діагностичний блок eventLoop із затримкою event-loop, використанням event-loop, співвідношенням CPU core та прапорцем degraded.
gateway usage-cost
Отримати зведення вартості використання з журналів сесій.
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
Отримати останній diagnostic stability recorder із запущеного Gateway.
openclaw gateway stability
openclaw gateway stability --type payload.large
openclaw gateway stability --bundle latest
openclaw gateway stability --bundle latest --export
openclaw gateway stability --json
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
Максимальна кількість останніх подій для включення (макс. 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Фільтрувати за типом діагностичної події, наприклад payload.large або diagnostic.memory.pressure.
"--since-seq--bundle [path]stringПрочитати збережений stability bundle замість виклику запущеного Gateway. Використовуйте --bundle latest (або просто --bundle) для найновішого bundle у каталозі стану або передайте шлях до JSON bundle напряму.
--exportbooleanЗаписати придатний для поширення zip із діагностикою підтримки замість друку подробиць стабільності.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Шлях виводу для --export.
Конфіденційність і поведінка bundle
- Записи зберігають операційні метадані: назви подій, лічильники, розміри в байтах, показники пам’яті, стан черги/сесії, назви каналів/plugin і заредаговані зведення сесій. Вони не зберігають текст чату, тіла webhook, виводи інструментів, сирі тіла запитів або відповідей, токени, cookie, секретні значення, імена хостів або сирі id сесій. Задайте
diagnostics.enabled: false, щоб повністю вимкнути recorder. - Під час фатальних завершень Gateway, тайм-аутів завершення й помилок запуску після перезапуску OpenClaw записує той самий діагностичний snapshot у
~/.openclaw/logs/stability/openclaw-stability-*.json, коли recorder має події. Перегляньте найновіший bundle за допомогоюopenclaw gateway stability --bundle latest;--limit,--typeі--since-seqтакож застосовуються до виводу bundle.
gateway diagnostics export
Записати локальний zip із діагностикою, призначений для додавання до звітів про помилки. Модель конфіденційності та вміст bundle описано в Експорт діагностики.
openclaw gateway diagnostics export
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
openclaw gateway diagnostics export --json
"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanПропустити пошук збереженого stability bundle.
--jsonbooleanНадрукувати записаний шлях, розмір і manifest як JSON.
Експорт містить manifest, Markdown-зведення, форму конфігурації, очищені подробиці конфігурації, очищені зведення журналів, очищені snapshot статусу/стану здоров’я Gateway і найновіший stability bundle, якщо він існує.
Він призначений для поширення. Він зберігає операційні подробиці, які допомагають із налагодженням, наприклад безпечні поля журналу OpenClaw, назви підсистем, коди статусу, тривалості, налаштовані режими, порти, id plugin, id провайдерів, несекретні налаштування функцій і заредаговані операційні повідомлення журналу. Він пропускає або редагує текст чату, тіла webhook, виводи інструментів, облікові дані, cookie, ідентифікатори акаунтів/повідомлень, текст prompt/інструкцій, імена хостів і секретні значення. Коли повідомлення у стилі LogTape схоже на текст payload користувача/чату/інструмента, експорт зберігає лише факт, що повідомлення було пропущено, а також його кількість байтів.
gateway status
gateway status показує сервіс Gateway (launchd/systemd/schtasks) плюс необов’язкову перевірку можливості підключення/автентифікації.
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanПропустити перевірку підключення (перегляд лише сервісу).
--deepbooleanТакож сканувати сервіси системного рівня.
--require-rpcbooleanПідвищити стандартну перевірку підключення до перевірки читання та завершуватися з ненульовим кодом, коли ця перевірка читання не вдається. Не можна поєднувати з --no-probe.
Семантика статусу
gateway statusзалишається доступною для діагностики, навіть коли локальна конфігурація CLI відсутня або недійсна.- Типова команда
gateway statusпідтверджує стан сервісу, WebSocket-підключення та можливість автентифікації, видиму під час handshake. Вона не підтверджує операції читання/запису/адміністрування. - Діагностичні перевірки не вносять змін для автентифікації пристрою вперше: вони повторно використовують наявний кешований токен пристрою, якщо він існує, але не створюють нову ідентичність CLI-пристрою чи запис read-only сполучення пристрою лише для перевірки статусу.
gateway statusза можливості розв’язує налаштовані auth SecretRefs для автентифікації перевірки.- Якщо обов’язковий auth SecretRef не розв’язано в цьому шляху команди,
gateway status --jsonповідомляєrpc.authWarning, коли підключення/автентифікація перевірки не вдається; передайте--token/--passwordявно або спершу розв’яжіть джерело секрету. - Якщо перевірка успішна, попередження про нерозв’язані auth-ref пригнічуються, щоб уникнути хибних спрацювань.
- Використовуйте
--require-rpcу скриптах і автоматизації, коли сервіс, що прослуховує порт, недостатній і потрібно, щоб RPC-виклики з областю читання також були справними. --deepдодає best-effort сканування додаткових установок launchd/systemd/schtasks. Коли виявлено кілька gateway-подібних сервісів, вивід для людини друкує підказки з очищення та попереджає, що більшість налаштувань мають запускати один gateway на машину.--deepтакож повідомляє про нещодавню передачу перезапуску супервізора Gateway, коли процес сервісу коректно завершився для перезапуску зовнішнім супервізором.- Вивід для людини містить розв’язаний шлях до файлового журналу, а також знімок шляхів/чинності конфігурації CLI проти сервісу, щоб допомогти діагностувати розбіжність профілю або state-dir.
Перевірки auth-drift для Linux systemd
- В установках Linux systemd перевірки розбіжності автентифікації сервісу читають значення
Environment=іEnvironmentFile=з unit (включно з%h, шляхами в лапках, кількома файлами та необов’язковими файлами з-). - Перевірки розбіжності розв’язують
gateway.auth.tokenSecretRefs за допомогою об’єднаного runtime env (спершу env команди сервісу, потім fallback до process env). - Якщо автентифікація токеном фактично не активна (явний
gateway.auth.modeзі значеннямpassword/none/trusted-proxy, або режим не задано, де пароль може перемогти й жоден кандидат токена не може перемогти), перевірки token-drift пропускають розв’язання токена конфігурації.
gateway probe
gateway probe — це команда «debug everything». Вона завжди перевіряє:
- ваш налаштований віддалений gateway (якщо задано), і
- localhost (loopback) навіть якщо віддалений gateway налаштовано.
Якщо передати --url, ця явна ціль додається перед обома. Вивід для людини позначає цілі так:
URL (explicit)Remote (configured)абоRemote (configured, inactive)Local loopback
openclaw gateway probe
openclaw gateway probe --json
Інтерпретація
Reachable: yesозначає, що принаймні одна ціль прийняла WebSocket-підключення.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyповідомляє, що перевірка змогла підтвердити щодо автентифікації. Це окремо від доступності.Read probe: okозначає, що RPC-виклики деталей з областю читання (health/status/system-presence/config.get) також успішні.Read probe: limited - missing scope: operator.readозначає, що підключення успішне, але RPC з областю читання обмежене. Це повідомляється як погіршена доступність, а не повна відмова.Read probe: failedпісляConnect: okозначає, що Gateway прийняв WebSocket-з’єднання, але подальша діагностика читання завершилася тайм-аутом або помилкою. Це також погіршена доступність, а не недоступний Gateway.- Як і
gateway status, probe повторно використовує наявну кешовану автентифікацію пристрою, але не створює першу ідентичність пристрою чи стан сполучення. - Код виходу ненульовий лише тоді, коли жодна перевірена ціль недоступна.
Вивід JSON
Верхній рівень:
ok: принаймні одна ціль доступна.degraded: принаймні одна ціль прийняла підключення, але не завершила повну детальну RPC-діагностику.capability: найкраща можливість, побачена серед доступних цілей (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeабоunknown).primaryTargetId: найкраща ціль, яку слід вважати активним переможцем у такому порядку: явний URL, SSH-тунель, налаштований віддалений хост, потім local loopback.warnings[]: best-effort записи попереджень ізcode,messageта необов’язковимиtargetIds.network: підказки URL для local loopback/tailnet, отримані з поточної конфігурації та мережі хоста.discovery.timeoutMsіdiscovery.count: фактичний бюджет/кількість результатів виявлення, використані для цього проходу перевірки.
Для кожної цілі (targets[].connect):
ok: доступність після connect + degraded класифікації.rpcOk: успішне повне RPC деталей.scopeLimited: RPC деталей не вдалося через відсутню область оператора.
Для кожної цілі (targets[].auth):
role: роль автентифікації, повідомлена вhello-ok, коли доступна.scopes: надані області, повідомлені вhello-ok, коли доступні.capability: показана класифікація можливості автентифікації для цієї цілі.
Поширені коди попереджень
ssh_tunnel_failed: налаштування SSH-тунелю не вдалося; команда повернулася до прямих перевірок.multiple_gateways: доступна більше ніж одна ціль; це незвично, якщо ви навмисно не запускаєте ізольовані профілі, наприклад rescue bot.auth_secretref_unresolved: налаштований auth SecretRef не вдалося розв’язати для цілі з помилкою.probe_scope_limited: WebSocket-підключення успішне, але перевірка читання обмежена через відсутнійoperator.read.
Віддалений доступ через SSH (паритет із Mac app)
Режим "Remote over SSH" у macOS app використовує локальне перенаправлення порту, щоб віддалений gateway (який може бути прив’язаний лише до loopback) став доступним за адресою ws://127.0.0.1:<port>.
Еквівалент CLI:
openclaw gateway probe --ssh user@gateway-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host або user@host:port (порт за замовчуванням 22).
--ssh-autobooleanВибрати перший виявлений хост gateway як SSH-ціль із розв’язаного endpoint виявлення (local. плюс налаштований wide-area domain, якщо є). Підказки лише TXT ігноруються.
Конфігурація (необов’язкова, використовується як значення за замовчуванням):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Низькорівневий RPC-помічник.
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanПереважно для agent-style RPC, які транслюють проміжні події перед фінальним payload.
--jsonbooleanМашинозчитуваний JSON-вивід.
Керування сервісом Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
Установлення з wrapper
Використовуйте --wrapper, коли керований сервіс має запускатися через інший виконуваний файл, наприклад shim менеджера секретів або run-as helper. Wrapper отримує звичайні аргументи Gateway і відповідає за те, щоб зрештою виконати openclaw або Node із цими аргументами.
cat > ~/.local/bin/openclaw-doppler <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
exec doppler run --project my-project --config production -- openclaw "$@"
EOF
chmod +x ~/.local/bin/openclaw-doppler
openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --force
openclaw gateway restart
Ви також можете задати wrapper через середовище. gateway install перевіряє, що шлях є виконуваним файлом, записує wrapper у service ProgramArguments і зберігає OPENCLAW_WRAPPER у середовищі сервісу для подальших примусових перевстановлень, оновлень і виправлень doctor.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
Щоб видалити збережений wrapper, очистьте OPENCLAW_WRAPPER під час перевстановлення:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
Параметри команд
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--force,--wait <duration>,--jsongateway uninstall|start|stop:--json
Поведінка життєвого циклу
- Використовуйте
gateway restart, щоб перезапустити керований сервіс. Не поєднуйтеgateway stopіgateway startяк заміну перезапуску; на macOSgateway stopнавмисно вимикає LaunchAgent перед його зупинкою. gateway restart --safeпросить запущений Gateway попередньо перевірити активну роботу OpenClaw і відкласти перезапуск, доки доставка відповідей, embedded runs і task runs не завершаться.--safeне можна поєднувати з--forceабо--wait.gateway restart --wait 30sперевизначає налаштований бюджет drain для цього перезапуску. Числа без одиниць — мілісекунди; приймаються одиниці на кшталтs,mіh.--wait 0очікує безстроково.gateway restart --forceпропускає drain активної роботи та перезапускає негайно. Використовуйте це, коли оператор уже перевірив перелічені блокувальники завдань і хоче повернути gateway зараз.- Команди життєвого циклу приймають
--jsonдля скриптів.
Автентифікація і SecretRefs під час установлення
- Коли автентифікація за токеном вимагає токен і
gateway.auth.tokenкерується через SecretRef,gateway installперевіряє, що SecretRef можна розв’язати, але не зберігає розв’язаний токен у метаданих середовища сервісу. - Якщо автентифікація за токеном вимагає токен, а налаштований SecretRef токена не розв’язано, установлення завершується закритою відмовою замість збереження резервного відкритого тексту.
- Для автентифікації паролем у
gateway runвіддавайте перевагуOPENCLAW_GATEWAY_PASSWORD,--password-fileабоgateway.auth.passwordна основі SecretRef замість вбудованого--password. - У виведеному режимі автентифікації лише оболонковий
OPENCLAW_GATEWAY_PASSWORDне послаблює вимоги до токена під час установлення; використовуйте тривалу конфігурацію (gateway.auth.passwordабоenvконфігурації) під час установлення керованого сервісу. - Якщо налаштовано і
gateway.auth.token, іgateway.auth.password, аgateway.auth.modeне задано, установлення блокується, доки режим не буде задано явно.
Виявлення gateway (Bonjour)
gateway discover сканує beacons Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): виберіть домен (приклад:
openclaw.internal.) і налаштуйте split DNS + DNS-сервер; див. Bonjour.
Лише gateway, для яких увімкнено виявлення Bonjour (типово), рекламують beacon.
Записи Wide-Area discovery містять (TXT):
role(підказка ролі gateway)transport(підказка транспорту, напр.gateway)gatewayPort(порт WebSocket, зазвичай18789)sshPort(необов’язково; клієнти типово використовують22для SSH-цілей, коли його немає)tailnetDns(ім’я хоста MagicDNS, коли доступне)gatewayTls/gatewayTlsSha256(TLS увімкнено + відбиток сертифіката)cliPath(підказка віддаленого встановлення, записана в wide-area зону)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanМашинозчитуваний вивід (також вимикає стилізацію/індикатор виконання).
Приклади:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'