O Gateway é o servidor WebSocket do OpenClaw (canais, nós, sessões, hooks). Os subcomandos nesta página ficam emDocumentation 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 ….
Descoberta Bonjour
Configuração de mDNS local + DNS-SD de área ampla.
Visão geral da descoberta
Como o OpenClaw anuncia e encontra gateways.
Configuração
Chaves de configuração de Gateway de nível superior.
Executar o Gateway
Execute um processo Gateway local:Comportamento de inicialização
Comportamento de inicialização
- Por padrão, o Gateway se recusa a iniciar a menos que
gateway.mode=localesteja definido em~/.openclaw/openclaw.json. Use--allow-unconfiguredpara execuções ad-hoc/dev. - Espera-se que
openclaw onboard --mode localeopenclaw setupgravemgateway.mode=local. Se o arquivo existir, masgateway.modeestiver ausente, trate isso como uma configuração quebrada ou sobrescrita e repare-a, em vez de assumir implicitamente o modo local. - Se o arquivo existir e
gateway.modeestiver ausente, o Gateway trata isso como dano suspeito à configuração e se recusa a “adivinhar local” para você. - Vincular além de loopback sem autenticação é bloqueado (proteção de segurança).
SIGUSR1aciona uma reinicialização dentro do processo quando autorizada (commands.restarté habilitado por padrão; definacommands.restart: falsepara bloquear a reinicialização manual, enquanto aplicação/atualização da ferramenta/configuração do Gateway permanecem permitidas).- Os manipuladores de
SIGINT/SIGTERMinterrompem o processo do Gateway, mas não restauram nenhum estado personalizado do terminal. Se você encapsular a CLI com uma TUI ou entrada em modo bruto, restaure o terminal antes de sair.
Opções
Porta WebSocket (o padrão vem da configuração/env; geralmente
18789).Modo de vinculação do listener.
Substituição do modo de autenticação.
Substituição do token (também define
OPENCLAW_GATEWAY_TOKEN para o processo).Substituição da senha.
Lê a senha do Gateway de um arquivo.
Expõe o Gateway via Tailscale.
Redefine a configuração serve/funnel do Tailscale no desligamento.
Permite iniciar o Gateway sem
gateway.mode=local na configuração. Ignora a proteção de inicialização apenas para bootstrap ad-hoc/dev; não grava nem repara o arquivo de configuração.Cria uma configuração dev + workspace se estiverem ausentes (ignora BOOTSTRAP.md).
Redefine configuração dev + credenciais + sessões + workspace (exige
--dev).Encerra qualquer listener existente na porta selecionada antes de iniciar.
Logs detalhados.
Mostra apenas logs do backend da CLI no console (e habilita stdout/stderr).
Estilo de log do WebSocket.
Alias para
--ws-log compact.Registra eventos brutos de stream do modelo em jsonl.
Caminho jsonl do stream bruto.
Reiniciar o Gateway
openclaw gateway restart --safe solicita ao Gateway em execução que faça uma pré-verificação do trabalho ativo do OpenClaw antes de reiniciar. Se operações em fila, entrega de respostas, execuções incorporadas ou execuções de tarefas estiverem ativas, o Gateway relata os bloqueadores, consolida solicitações duplicadas de reinicialização segura e reinicia quando o trabalho ativo esvazia. restart simples mantém o comportamento existente do gerenciador de serviço para compatibilidade. Use --force apenas quando você quiser explicitamente o caminho de substituição imediata.
openclaw gateway restart --safe --skip-deferral executa a mesma reinicialização coordenada e ciente do OpenClaw que --safe, mas ignora a barreira de adiamento por trabalho ativo, de modo que o Gateway emite a reinicialização imediatamente mesmo quando bloqueadores são relatados. Use-o como saída operacional quando um adiamento ficar preso por uma execução de tarefa travada e --safe sozinho aguardaria indefinidamente. --skip-deferral exige --safe.
Perfilamento de inicialização
- Defina
OPENCLAW_GATEWAY_STARTUP_TRACE=1para registrar tempos de fases durante a inicialização do Gateway, incluindo atrasoeventLoopMaxpor fase e tempos de tabelas de consulta de plugins para índice instalado, registro de manifesto, planejamento de inicialização e trabalho de mapa de proprietários. - Defina
OPENCLAW_DIAGNOSTICS=timelinecomOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>para gravar uma linha do tempo de diagnósticos de inicialização em JSONL de melhor esforço para harnesses externos de QA. Você também pode habilitar a flag comdiagnostics.flags: ["timeline"]na configuração; o caminho ainda é fornecido por env. AdicioneOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1para incluir amostras do loop de eventos. - Execute
pnpm test:startup:gateway -- --runs 5 --warmup 1para medir o benchmark de inicialização do Gateway. O benchmark registra a primeira saída do processo,/healthz,/readyz, tempos do trace de inicialização, atraso do loop de eventos e detalhes de tempo das tabelas de consulta de plugins.
Consultar um Gateway em execução
Todos os comandos de consulta usam RPC por WebSocket.- Modos de saída
- Opções compartilhadas
- Padrão: legível por humanos (colorido em TTY).
--json: JSON legível por máquina (sem estilo/spinner).--no-color(ouNO_COLOR=1): desabilita ANSI mantendo o layout humano.
Quando você define
--url, a CLI não recorre a credenciais de configuração ou ambiente. Passe --token ou --password explicitamente. A ausência de credenciais explícitas é um erro.gateway health
/healthz é uma sonda de vivacidade: ele retorna assim que o servidor consegue responder HTTP. O endpoint HTTP /readyz é mais rigoroso e permanece vermelho enquanto sidecars de plugins de inicialização, canais ou hooks configurados ainda estão se acomodando. Respostas detalhadas de prontidão locais ou autenticadas incluem um bloco de diagnóstico eventLoop com atraso do loop de eventos, utilização do loop de eventos, proporção de núcleos de CPU e uma flag degraded.
gateway usage-cost
Busca resumos de custo de uso nos logs de sessão.
Número de dias a incluir.
gateway stability
Busca o gravador recente de estabilidade diagnóstica de um Gateway em execução.
Número máximo de eventos recentes a incluir (máx.
1000).Filtra por tipo de evento de diagnóstico, como
payload.large ou diagnostic.memory.pressure.Inclui apenas eventos após um número de sequência de diagnóstico.
Lê um pacote de estabilidade persistido em vez de chamar o Gateway em execução. Use
--bundle latest (ou apenas --bundle) para o pacote mais novo no diretório de estado, ou passe diretamente um caminho JSON de pacote.Grava um zip compartilhável de diagnósticos de suporte em vez de imprimir detalhes de estabilidade.
Caminho de saída para
--export.Privacidade e comportamento do pacote
Privacidade e comportamento do pacote
- Os registros mantêm metadados operacionais: nomes de eventos, contagens, tamanhos em bytes, leituras de memória, estado de filas/sessões, nomes de canais/plugins e resumos de sessão redigidos. Eles não mantêm texto de chat, corpos de webhook, saídas de ferramentas, corpos brutos de solicitação ou resposta, tokens, cookies, valores secretos, nomes de host ou ids brutos de sessão. Defina
diagnostics.enabled: falsepara desabilitar totalmente o gravador. - Em saídas fatais do Gateway, tempos limite de desligamento e falhas de inicialização após reinicialização, o OpenClaw grava o mesmo snapshot de diagnóstico em
~/.openclaw/logs/stability/openclaw-stability-*.jsonquando o gravador tem eventos. Inspecione o pacote mais novo comopenclaw gateway stability --bundle latest;--limit,--typee--since-seqtambém se aplicam à saída de pacotes.
gateway diagnostics export
Grava um zip local de diagnósticos projetado para ser anexado a relatórios de bugs. Para o modelo de privacidade e o conteúdo do pacote, consulte Exportação de diagnósticos.
Caminho do zip de saída. O padrão é uma exportação de suporte no diretório de estado.
Máximo de linhas de log sanitizadas a incluir.
Máximo de bytes de log a inspecionar.
URL WebSocket do Gateway para o snapshot de saúde.
Token do Gateway para o snapshot de saúde.
Senha do Gateway para o snapshot de saúde.
Tempo limite do snapshot de status/saúde.
Ignora a busca de pacote de estabilidade persistido.
Imprime o caminho gravado, o tamanho e o manifesto como JSON.
gateway status
gateway status mostra o serviço do Gateway (launchd/systemd/schtasks) mais uma sonda opcional de capacidade de conectividade/autenticação.
Adiciona um destino de sondagem explícito. O remoto configurado + localhost ainda são sondados.
Autenticação por token para a sondagem.
Autenticação por senha para a sondagem.
Tempo limite da sondagem.
Ignora a sondagem de conectividade (visualização apenas do serviço).
Varre também serviços em nível de sistema.
Promove a sondagem de conectividade padrão para uma sondagem de leitura e sai com código diferente de zero quando essa sondagem de leitura falha. Não pode ser combinado com
--no-probe.Semântica de status
Semântica de status
gateway statuspermanece disponível para diagnóstico mesmo quando a configuração da CLI local está ausente ou inválida.- O
gateway statuspadrão comprova o estado do serviço, a conexão WebSocket e a capacidade de autenticação visível no momento do handshake. Ele não comprova operações de leitura/gravação/administração. - Sondagens de diagnóstico não fazem mutações para autenticação de dispositivo pela primeira vez: elas reutilizam um token de dispositivo existente em cache quando há um, mas não criam uma nova identidade de dispositivo da CLI nem um registro de pareamento de dispositivo somente leitura apenas para verificar o status.
gateway statusresolve SecretRefs de autenticação configurados para autenticação da sondagem quando possível.- Se uma SecretRef de autenticação obrigatória não for resolvida nesse caminho de comando,
gateway status --jsonrelatarpc.authWarningquando a conectividade/autenticação da sondagem falha; passe--token/--passwordexplicitamente ou resolva primeiro a origem do segredo. - Se a sondagem for bem-sucedida, avisos de referência de autenticação não resolvida são suprimidos para evitar falsos positivos.
- Use
--require-rpcem scripts e automação quando um serviço em escuta não for suficiente e você também precisar que chamadas RPC de escopo de leitura estejam íntegras. --deepadiciona uma varredura de melhor esforço por instalações extras de launchd/systemd/schtasks. Quando vários serviços semelhantes ao Gateway são detectados, a saída humana imprime dicas de limpeza e avisa que a maioria das configurações deve executar um Gateway por máquina.--deeptambém relata uma transferência recente de reinício do supervisor do Gateway quando o processo do serviço saiu corretamente para um reinício por supervisor externo.--deepexecuta a validação de configuração em modo ciente de plugins (pluginValidation: "full") e expõe avisos de manifestos de plugins configurados (por exemplo, metadados ausentes de configuração de canal) para que verificações de fumaça de instalação e atualização os detectem. Ogateway statuspadrão mantém o caminho rápido somente leitura que ignora a validação de plugins.- A saída humana inclui o caminho resolvido do log em arquivo mais o instantâneo de caminhos/validade da configuração da CLI versus serviço para ajudar a diagnosticar desvios de perfil ou diretório de estado.
Verificações de desvio de autenticação do Linux systemd
Verificações de desvio de autenticação do Linux systemd
- Em instalações Linux systemd, as verificações de desvio de autenticação de serviço leem valores de
Environment=eEnvironmentFile=da unit (incluindo%h, caminhos entre aspas, vários arquivos e arquivos opcionais com-). - Verificações de desvio resolvem SecretRefs de
gateway.auth.tokenusando o env de runtime mesclado (primeiro o env do comando do serviço, depois o fallback do env do processo). - Se a autenticação por token não estiver efetivamente ativa (
gateway.auth.modeexplícito comopassword/none/trusted-proxy, ou modo não definido quando a senha pode vencer e nenhum candidato de token pode vencer), as verificações de desvio de token ignoram a resolução do token de configuração.
gateway probe
gateway probe é o comando de “depurar tudo”. Ele sempre sonda:
- seu gateway remoto configurado (se definido), e
- localhost (loopback) mesmo que o remoto esteja configurado.
--url, esse destino explícito será adicionado antes de ambos. A saída humana rotula os destinos como:
URL (explicit)Remote (configured)ouRemote (configured, inactive)Local loopback
Se vários gateways estiverem acessíveis, ele imprime todos eles. Vários gateways são compatíveis quando você usa perfis/portas isolados (por exemplo, um bot de resgate), mas a maioria das instalações ainda executa um único Gateway.
Interpretação
Interpretação
Reachable: yessignifica que pelo menos um destino aceitou uma conexão WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyrelata o que a sondagem conseguiu comprovar sobre autenticação. É separado da acessibilidade.Read probe: oksignifica que chamadas RPC detalhadas de escopo de leitura (health/status/system-presence/config.get) também foram bem-sucedidas.Read probe: limited - missing scope: operator.readsignifica que a conexão foi bem-sucedida, mas o RPC de escopo de leitura está limitado. Isso é relatado como acessibilidade degradada, não falha completa.Read probe: failedapósConnect: oksignifica que o Gateway aceitou a conexão WebSocket, mas os diagnósticos de leitura seguintes atingiram o tempo limite ou falharam. Isso também é acessibilidade degradada, não um Gateway inacessível.- Como
gateway status, a sondagem reutiliza a autenticação de dispositivo existente em cache, mas não cria identidade de dispositivo pela primeira vez nem estado de pareamento. - O código de saída só é diferente de zero quando nenhum destino sondado está acessível.
Saída JSON
Saída JSON
Nível superior:
ok: pelo menos um destino está acessível.degraded: pelo menos um destino aceitou uma conexão, mas não concluiu diagnósticos RPC detalhados completos.capability: melhor capacidade observada entre os destinos acessíveis (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeouunknown).primaryTargetId: melhor destino a tratar como o vencedor ativo nesta ordem: URL explícita, túnel SSH, remoto configurado e então local loopback.warnings[]: registros de aviso de melhor esforço comcode,messageetargetIdsopcional.network: dicas de URL de local loopback/tailnet derivadas da configuração atual e da rede do host.discovery.timeoutMsediscovery.count: o orçamento/contagem de resultados de descoberta reais usados nesta passagem de sondagem.
targets[].connect):ok: acessibilidade após conexão + classificação degradada.rpcOk: sucesso completo do RPC detalhado.scopeLimited: RPC detalhado falhou por falta de escopo de operador.
targets[].auth):role: função de autenticação relatada emhello-okquando disponível.scopes: escopos concedidos relatados emhello-okquando disponíveis.capability: a classificação de capacidade de autenticação exposta para esse destino.
Códigos de aviso comuns
Códigos de aviso comuns
ssh_tunnel_failed: a configuração do túnel SSH falhou; o comando recorreu a sondagens diretas.multiple_gateways: mais de um destino estava acessível; isso é incomum, a menos que você execute intencionalmente perfis isolados, como um bot de resgate.auth_secretref_unresolved: uma SecretRef de autenticação configurada não pôde ser resolvida para um destino com falha.probe_scope_limited: a conexão WebSocket foi bem-sucedida, mas a sondagem de leitura foi limitada pela ausência deoperator.read.
Remoto por SSH (paridade com o app para Mac)
O modo “Remote over SSH” do app macOS usa um encaminhamento de porta local para que o gateway remoto (que pode estar vinculado apenas ao loopback) fique acessível emws://127.0.0.1:<port>.
Equivalente na CLI:
user@host ou user@host:port (a porta padrão é 22).Arquivo de identidade.
Escolhe o primeiro host de gateway descoberto como destino SSH a partir do endpoint de descoberta resolvido (
local. mais o domínio de longa distância configurado, se houver). Dicas somente TXT são ignoradas.gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Auxiliar RPC de baixo nível.
String de objeto JSON para parâmetros.
URL WebSocket do Gateway.
Token do Gateway.
Senha do Gateway.
Orçamento de tempo limite.
Principalmente para RPCs no estilo de agente que transmitem eventos intermediários antes de uma carga útil final.
Saída JSON legível por máquina.
--params deve ser JSON válido.Gerenciar o serviço Gateway
Instalar com um wrapper
Use--wrapper quando o serviço gerenciado precisar iniciar por meio de outro executável, por exemplo um
shim de gerenciador de segredos ou um auxiliar run-as. O wrapper recebe os argumentos normais do Gateway e é
responsável por, eventualmente, executar openclaw ou Node com esses argumentos.
gateway install valida que o caminho é
um arquivo executável, grava o wrapper em ProgramArguments do serviço e persiste
OPENCLAW_WRAPPER no ambiente do serviço para reinstalações forçadas, atualizações e reparos do doctor
posteriores.
OPENCLAW_WRAPPER ao reinstalar:
Opções de comando
Opções de comando
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--skip-deferral,--force,--wait <duration>,--jsongateway uninstall|start:--jsongateway stop:--disable,--json
Comportamento do ciclo de vida
Comportamento do ciclo de vida
- Use
gateway restartpara reiniciar um serviço gerenciado. Não encadeiegateway stopegateway startcomo substituto de reinicialização. - No macOS,
gateway stopusalaunchctl bootoutpor padrão, o que remove o LaunchAgent da sessão de inicialização atual sem persistir uma desativação — a recuperação automática do KeepAlive permanece ativa para falhas futuras, egateway startreativa de forma limpa sem umlaunchctl enablemanual. Passe--disablepara suprimir persistentemente KeepAlive e RunAtLoad, de modo que o gateway não seja reiniciado até o próximogateway startexplícito; use isso quando uma parada manual deve sobreviver a reinicializações ou reinícios do sistema. gateway restart --safesolicita ao Gateway em execução que faça uma pré-verificação do trabalho ativo do OpenClaw e adie a reinicialização até que a entrega de respostas, execuções incorporadas e execuções de tarefas sejam drenadas.--safenão pode ser combinado com--forceou--wait.gateway restart --wait 30ssubstitui o orçamento configurado de drenagem de reinicialização para essa reinicialização. Números sem unidade são milissegundos; unidades comos,mehsão aceitas.--wait 0aguarda indefinidamente.gateway restart --safe --skip-deferralexecuta a reinicialização segura ciente do OpenClaw, mas ignora a barreira de adiamento, para que o Gateway emita a reinicialização imediatamente mesmo quando bloqueadores forem relatados. Escape operacional para adiamentos de execuções de tarefas travadas; requer--safe.gateway restart --forceignora a drenagem de trabalho ativo e reinicia imediatamente. Use quando um operador já tiver inspecionado os bloqueadores de tarefas listados e quiser o gateway de volta agora.- Comandos de ciclo de vida aceitam
--jsonpara scripting.
Autenticação e SecretRefs no momento da instalação
Autenticação e SecretRefs no momento da instalação
- Quando a autenticação por token exige um token e
gateway.auth.tokené gerenciado por SecretRef,gateway installvalida que o SecretRef pode ser resolvido, mas não persiste o token resolvido nos metadados de ambiente do serviço. - Se a autenticação por token exige um token e o SecretRef de token configurado não é resolvido, a instalação falha de forma fechada em vez de persistir texto simples de fallback.
- Para autenticação por senha em
gateway run, prefiraOPENCLAW_GATEWAY_PASSWORD,--password-fileou umgateway.auth.passwordbaseado em SecretRef em vez de--passwordinline. - No modo de autenticação inferida,
OPENCLAW_GATEWAY_PASSWORDdisponível apenas no shell não relaxa os requisitos de token de instalação; use configuração durável (gateway.auth.passwordouenvde configuração) ao instalar um serviço gerenciado. - Se
gateway.auth.tokenegateway.auth.passwordestiverem configurados egateway.auth.modenão estiver definido, a instalação é bloqueada até que o modo seja definido explicitamente.
Descobrir Gateways (Bonjour)
gateway discover verifica beacons de Gateway (_openclaw-gw._tcp).
- DNS-SD multicast:
local. - DNS-SD unicast (Bonjour de área ampla): escolha um domínio (exemplo:
openclaw.internal.) e configure DNS dividido + um servidor DNS; consulte Bonjour.
role(dica de função do gateway)transport(dica de transporte, por exemplo,gateway)gatewayPort(porta WebSocket, geralmente18789)sshPort(somente modo de descoberta completo; clientes usam22como destino SSH padrão quando ausente)tailnetDns(nome de host MagicDNS, quando disponível)gatewayTls/gatewayTlsSha256(TLS ativado + impressão digital do certificado)cliPath(somente modo de descoberta completo)
gateway discover
Tempo limite por comando (browse/resolve).
Saída legível por máquina (também desativa estilo/spinner).
- A CLI verifica
local.mais o domínio de área ampla configurado quando um está ativado. wsUrlna saída JSON é derivado do endpoint de serviço resolvido, não de dicas apenas TXT, comolanHostoutailnetDns.- Em mDNS
local.e DNS-SD de área ampla,sshPortecliPathsão publicados somente quandodiscovery.mdns.modeéfull.