Gateway — це WebSocket-сервер OpenClaw (канали, вузли, сесії, хуки). Підкоманди на цій сторінці розташовані підDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw gateway ….
Виявлення Bonjour
Налаштування локального mDNS + глобального DNS-SD.
Огляд виявлення
Як OpenClaw оголошує про шлюзи й знаходить їх.
Конфігурація
Ключі конфігурації gateway верхнього рівня.
Запуск Gateway
Запустіть локальний процес Gateway:Поведінка запуску
Поведінка запуску
- За замовчуванням 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, відновіть термінал перед виходом.
Параметри
Порт WebSocket (значення за замовчуванням береться з config/env; зазвичай
18789).Режим прив’язки слухача.
Перевизначення режиму автентифікації.
Перевизначення токена (також задає
OPENCLAW_GATEWAY_TOKEN для процесу).Перевизначення пароля.
Прочитати пароль gateway з файлу.
Відкрити доступ до Gateway через Tailscale.
Скинути конфігурацію Tailscale serve/funnel під час завершення.
Дозволити запуск gateway без
gateway.mode=local у конфігурації. Обходить захист запуску лише для разового/dev bootstrap; не записує й не виправляє файл конфігурації.Створити dev config + робочий простір, якщо їх немає (пропускає BOOTSTRAP.md).
Скинути dev config + облікові дані + сесії + робочий простір (потребує
--dev).Завершити будь-який наявний слухач на вибраному порту перед запуском.
Докладні журнали.
Показувати в консолі лише журнали backend CLI (і ввімкнути stdout/stderr).
Стиль журналу WebSocket.
Псевдонім для
--ws-log compact.Записувати сирі події потоку моделі в jsonl.
Шлях до jsonl сирого потоку.
Перезапуск Gateway
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, CLI не повертається до облікових даних із конфігурації або середовища. Передайте --token або --password явно. Відсутність явних облікових даних є помилкою.gateway health
/healthz — це liveness probe: він повертає відповідь, щойно сервер може відповідати через HTTP. HTTP endpoint /readyz суворіший і залишається червоним, поки startup plugin sidecars, канали або налаштовані хуки ще стабілізуються. Локальні або автентифіковані докладні відповіді готовності містять діагностичний блок eventLoop із затримкою event-loop, використанням event-loop, співвідношенням CPU core та прапорцем degraded.
gateway usage-cost
Отримати зведення вартості використання з журналів сесій.
Кількість днів для включення.
gateway stability
Отримати останній diagnostic stability recorder із запущеного Gateway.
Максимальна кількість останніх подій для включення (макс.
1000).Фільтрувати за типом діагностичної події, наприклад
payload.large або diagnostic.memory.pressure.Включати лише події після номера діагностичної послідовності.
Прочитати збережений stability bundle замість виклику запущеного Gateway. Використовуйте
--bundle latest (або просто --bundle) для найновішого bundle у каталозі стану або передайте шлях до JSON bundle напряму.Записати придатний для поширення zip із діагностикою підтримки замість друку подробиць стабільності.
Шлях виводу для
--export.Конфіденційність і поведінка bundle
Конфіденційність і поведінка 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 описано в Експорт діагностики.
Шлях до zip виводу. За замовчуванням — support export у каталозі стану.
Максимальна кількість очищених рядків журналу для включення.
Максимальна кількість байтів журналу для перевірки.
WebSocket URL Gateway для snapshot стану здоров’я.
Токен Gateway для snapshot стану здоров’я.
Пароль Gateway для snapshot стану здоров’я.
Тайм-аут snapshot статусу/стану здоров’я.
Пропустити пошук збереженого stability bundle.
Надрукувати записаний шлях, розмір і manifest як JSON.
gateway status
gateway status показує сервіс Gateway (launchd/systemd/schtasks) плюс необов’язкову перевірку можливості підключення/автентифікації.
Додайте явну ціль перевірки. Налаштований віддалений хост + localhost усе одно перевіряються.
Автентифікація токеном для перевірки.
Автентифікація паролем для перевірки.
Тайм-аут перевірки.
Пропустити перевірку підключення (перегляд лише сервісу).
Також сканувати сервіси системного рівня.
Підвищити стандартну перевірку підключення до перевірки читання та завершуватися з ненульовим кодом, коли ця перевірка читання не вдається. Не можна поєднувати з
--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
Перевірки 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
Якщо доступні кілька gateway, команда друкує їх усі. Кілька gateway підтримуються, коли ви використовуєте ізольовані профілі/порти (наприклад, rescue bot), але більшість установок усе одно запускає один gateway.
Інтерпретація
Інтерпретація
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
Вивід 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:
user@host або user@host:port (порт за замовчуванням 22).Файл ідентичності.
Вибрати перший виявлений хост gateway як SSH-ціль із розв’язаного endpoint виявлення (
local. плюс налаштований wide-area domain, якщо є). Підказки лише TXT ігноруються.gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Низькорівневий RPC-помічник.
Рядок JSON-об’єкта для params.
WebSocket URL Gateway.
Токен Gateway.
Пароль Gateway.
Бюджет тайм-ауту.
Переважно для agent-style RPC, які транслюють проміжні події перед фінальним payload.
Машинозчитуваний JSON-вивід.
--params має бути дійсним JSON.Керування сервісом Gateway
Установлення з wrapper
Використовуйте--wrapper, коли керований сервіс має запускатися через інший виконуваний файл, наприклад shim менеджера секретів або run-as helper. Wrapper отримує звичайні аргументи Gateway і відповідає за те, щоб зрештою виконати openclaw або Node із цими аргументами.
gateway install перевіряє, що шлях є виконуваним файлом, записує wrapper у service ProgramArguments і зберігає OPENCLAW_WRAPPER у середовищі сервісу для подальших примусових перевстановлень, оновлень і виправлень doctor.
OPENCLAW_WRAPPER під час перевстановлення:
Параметри команд
Параметри команд
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 під час установлення
Автентифікація і 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.
role(підказка ролі gateway)transport(підказка транспорту, напр.gateway)gatewayPort(порт WebSocket, зазвичай18789)sshPort(необов’язково; клієнти типово використовують22для SSH-цілей, коли його немає)tailnetDns(ім’я хоста MagicDNS, коли доступне)gatewayTls/gatewayTlsSha256(TLS увімкнено + відбиток сертифіката)cliPath(підказка віддаленого встановлення, записана в wide-area зону)
gateway discover
Тайм-аут для команди (browse/resolve).
Машинозчитуваний вивід (також вимикає стилізацію/індикатор виконання).
- CLI сканує
local.плюс налаштований wide-area домен, коли його ввімкнено. wsUrlу JSON-виводі походить від розв’язаного endpoint сервісу, а не від підказок лише з TXT, як-отlanHostабоtailnetDns.- У
local.mDNS,sshPortіcliPathтранслюються лише колиdiscovery.mdns.modeдорівнюєfull. Wide-area DNS-SD все одно записуєcliPath;sshPortтам також лишається необов’язковим.