CLI commands
Gateway
O Gateway é o servidor WebSocket do OpenClaw (canais, nós, sessões, ganchos). Os subcomandos nesta página ficam em openclaw gateway ….
Configuração de mDNS local + DNS-SD de área ampla.
Como o OpenClaw anuncia e encontra gateways.
Chaves de configuração de gateway de nível superior.
Executar o Gateway
Execute um processo local do Gateway:
openclaw gateway
Alias de primeiro plano:
openclaw gateway run
Startup behavior
- 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/de desenvolvimento. - 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 presumir 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" por 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 reinicialização manual, enquanto aplicação/atualização de ferramenta/configuração do gateway continuam permitidas).- Os manipuladores de
SIGINT/SIGTERMinterrompem o processo do gateway, mas não restauram nenhum estado personalizado do terminal. Se você envolver a CLI com uma TUI ou entrada em modo bruto, restaure o terminal antes de sair.
Opções
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Porta WebSocket (o padrão vem da configuração/env; geralmente 18789).
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Substituição do token (também define OPENCLAW_GATEWAY_TOKEN para o processo).
"--password"--tailscale--tailscale-reset-on-exitbooleanRedefinir a configuração serve/funnel do Tailscale no desligamento.
--allow-unconfiguredbooleanPermitir início do gateway sem gateway.mode=local na configuração. Ignora a proteção de inicialização apenas para bootstrap ad hoc/de desenvolvimento; não grava nem repara o arquivo de configuração.
--devbooleanCriar uma configuração de desenvolvimento + workspace se ausentes (ignora BOOTSTRAP.md).
--resetbooleanRedefinir configuração de desenvolvimento + credenciais + sessões + workspace (requer --dev).
--forcebooleanEncerrar qualquer listener existente na porta selecionada antes de iniciar.
--verbosebooleanLogs detalhados.
--cli-backend-logsbooleanMostrar apenas logs do backend da CLI no console (e habilitar stdout/stderr).
"--ws-log--compactbooleanAlias para --ws-log compact.
--raw-streambooleanRegistrar eventos brutos de stream do modelo em jsonl.
Reiniciar o Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe pede ao Gateway em execução para pré-verificar trabalho ativo do OpenClaw antes de reiniciar. Se operações enfileiradas, entrega de respostas, execuções incorporadas ou execuções de tarefas estiverem ativas, o Gateway relata os bloqueadores, mescla solicitações duplicadas de reinicialização segura e reinicia quando o trabalho ativo for drenado. 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.
Perfil 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 tabela 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 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 de event-loop. - Execute
pnpm test:startup:gateway -- --runs 5 --warmup 1para medir a inicialização do Gateway. O benchmark registra a primeira saída do processo,/healthz,/readyz, tempos do trace de inicialização, atraso do event-loop e detalhes de tempo da tabela de consulta de plugins.
Consultar um Gateway em execução
Todos os comandos de consulta usam RPC WebSocket.
Output modes
- 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.
Shared options
--url <url>: URL WebSocket do Gateway.--token <token>: token do Gateway.--password <password>: senha do Gateway.--timeout <ms>: timeout/orçamento (varia por comando).--expect-final: aguardar uma resposta "final" (chamadas de agente).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789
O endpoint HTTP /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 ganchos configurados ainda estão se estabilizando. Respostas detalhadas de prontidão locais ou autenticadas incluem um bloco de diagnóstico eventLoop com atraso do event-loop, utilização do event-loop, proporção de núcleos de CPU e uma flag degraded.
gateway usage-cost
Buscar resumos de custo de uso nos logs de sessão.
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
Buscar o gravador recente de estabilidade de diagnósticos de um Gateway em execução.
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">
Número máximo de eventos recentes a incluir (máx. 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Filtrar por tipo de evento de diagnóstico, como payload.large ou diagnostic.memory.pressure.
"--since-seq--bundle [path]stringLer um pacote de estabilidade persistido em vez de chamar o Gateway em execução. Use --bundle latest (ou apenas --bundle) para o pacote mais recente sob o diretório de estado, ou passe diretamente um caminho JSON de pacote.
--exportbooleanGravar um zip compartilhável de diagnósticos de suporte em vez de imprimir detalhes de estabilidade.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Caminho de saída para --export.
Privacy and bundle behavior
- Os registros mantêm metadados operacionais: nomes de eventos, contagens, tamanhos em bytes, leituras de memória, estado de fila/sessão, 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 nem ids brutos de sessão. Defina
diagnostics.enabled: falsepara desabilitar totalmente o gravador. - Em saídas fatais do Gateway, timeouts de desligamento e falhas de inicialização de 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 recente comopenclaw gateway stability --bundle latest;--limit,--typee--since-seqtambém se aplicam à saída do pacote.
gateway diagnostics export
Grava um zip local de diagnósticos projetado para ser anexado a relatórios de bug. Para o modelo de privacidade e o conteúdo do pacote, consulte Exportação de Diagnósticos.
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-bundlebooleanIgnorar busca de pacote de estabilidade persistido.
--jsonbooleanImprimir o caminho gravado, tamanho e manifesto como JSON.
A exportação contém um manifesto, um resumo em Markdown, formato da configuração, detalhes sanitizados da configuração, resumos sanitizados de logs, snapshots sanitizados de status/saúde do Gateway e o pacote de estabilidade mais recente quando existir.
Ela foi feita para ser compartilhada. Mantém detalhes operacionais que ajudam na depuração, como campos seguros de log do OpenClaw, nomes de subsistemas, códigos de status, durações, modos configurados, portas, ids de plugins, ids de provedores, configurações de recursos não secretas e mensagens de log operacional redigidas. Ela omite ou redige texto de chat, corpos de webhook, saídas de ferramentas, credenciais, cookies, identificadores de conta/mensagem, texto de prompt/instrução, nomes de host e valores secretos. Quando uma mensagem no estilo LogTape parece texto de payload de usuário/chat/ferramenta, a exportação mantém apenas que uma mensagem foi omitida mais sua contagem de bytes.
gateway status
gateway status mostra o serviço Gateway (launchd/systemd/schtasks) mais uma sonda opcional de capacidade de conectividade/autenticação.
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanIgnore a sondagem de conectividade (visualização apenas do serviço).
--deepbooleanExamine também serviços em nível de sistema.
--require-rpcbooleanAtualize a sondagem de conectividade padrão para uma sondagem de leitura e saia com código diferente de zero quando essa sondagem de leitura falhar. Não pode ser combinado com --no-probe.
Semântica de status
gateway statuspermanece disponível para diagnósticos mesmo quando a configuração local da CLI 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/escrita/administração. - As sondagens de diagnóstico não fazem mutações para autenticação inicial de dispositivo: elas reutilizam um token de dispositivo em cache existente quando houver 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 configuradas para autenticação da sondagem quando possível.- Se uma SecretRef de autenticação obrigatória não for resolvida neste caminho de comando,
gateway status --jsonreportarárpc.authWarningquando a conectividade/autenticação da sondagem falhar; passe--token/--passwordexplicitamente ou resolva a origem do segredo primeiro. - Se a sondagem for bem-sucedida, avisos de auth-ref não resolvida serão suprimidos para evitar falsos positivos.
- Use
--require-rpcem scripts e automação quando um serviço ouvindo não for suficiente e você também precisar que chamadas RPC com escopo de leitura estejam íntegras. --deepadiciona uma varredura de melhor esforço em busca de 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 informa 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.- A saída humana inclui o caminho resolvido do arquivo de log mais o instantâneo de caminhos/validade da configuração da CLI versus serviço para ajudar a diagnosticar divergência de perfil ou diretório de estado.
Verificações de divergência de autenticação no Linux systemd
- Em instalações Linux systemd, as verificações de divergência de autenticação do serviço leem valores de
Environment=eEnvironmentFile=da unidade (incluindo%h, caminhos entre aspas, vários arquivos e arquivos opcionais com-). - As verificações de divergência resolvem SecretRefs de
gateway.auth.tokenusando o env de runtime mesclado (primeiro o env de 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 depassword/none/trusted-proxy, ou modo não definido em que a senha pode vencer e nenhum candidato a token pode vencer), as verificações de divergência 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 se o remoto estiver configurado.
Se você passar --url, esse alvo explícito será adicionado antes de ambos. A saída humana rotula os alvos como:
URL (explicit)Remote (configured)ouRemote (configured, inactive)Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretação
Reachable: yessignifica que pelo menos um alvo aceitou uma conexão WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyinforma o que a sondagem conseguiu comprovar sobre autenticação. É separado da alcançabilidade.Read probe: oksignifica que chamadas RPC de detalhe com 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 com escopo de leitura está limitado. Isso é relatado como alcançabilidade degradada, não falha completa.Read probe: faileddepois deConnect: oksignifica que o Gateway aceitou a conexão WebSocket, mas os diagnósticos de leitura posteriores atingiram tempo limite ou falharam. Isso também é alcançabilidade degradada, não um Gateway inalcançável.- Assim como
gateway status, a sondagem reutiliza a autenticação de dispositivo em cache existente, mas não cria identidade de dispositivo inicial nem estado de pareamento. - O código de saída é diferente de zero apenas quando nenhum alvo sondado está alcançável.
Saída JSON
Nível superior:
ok: pelo menos um alvo está alcançável.degraded: pelo menos um alvo aceitou uma conexão, mas não concluiu os diagnósticos RPC de detalhe completos.capability: melhor capacidade vista entre alvos alcançáveis (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scopeouunknown).primaryTargetId: melhor alvo para tratar como o vencedor ativo nesta ordem: URL explícita, túnel SSH, remoto configurado e, por fim, local loopback.warnings[]: registros de aviso de melhor esforço comcode,messageetargetIdsopcionais.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 real de descoberta usado para esta passagem de sondagem.
Por alvo (targets[].connect):
ok: alcançabilidade após conexão + classificação degradada.rpcOk: sucesso completo do RPC de detalhe.scopeLimited: RPC de detalhe falhou por falta de escopo de operador.
Por alvo (targets[].auth):
role: função de autenticação reportada emhello-okquando disponível.scopes: escopos concedidos reportados emhello-okquando disponíveis.capability: a classificação de capacidade de autenticação exposta para esse alvo.
Códigos de aviso comuns
ssh_tunnel_failed: a configuração do túnel SSH falhou; o comando voltou para sondagens diretas.multiple_gateways: mais de um alvo estava alcançá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 alvo 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 via SSH (paridade com app Mac)
O modo "Remoto via SSH" do app macOS usa um encaminhamento de porta local para que o gateway remoto (que pode estar vinculado apenas ao loopback) fique alcançável em ws://127.0.0.1:<port>.
Equivalente na CLI:
openclaw gateway probe --ssh user@gateway-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host ou user@host:port (a porta usa 22 por padrão).
--ssh-autobooleanEscolha o primeiro host de gateway descoberto como alvo SSH a partir do endpoint de descoberta resolvido (local. mais o domínio de área ampla configurado, se houver). Dicas somente TXT são ignoradas.
Configuração (opcional, usada como padrões):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Auxiliar RPC de baixo nível.
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanPrincipalmente para RPCs no estilo de agente que transmitem eventos intermediários antes de uma carga útil final.
--jsonbooleanSaída JSON legível por máquina.
Gerenciar o serviço do Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
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.
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
Você também pode definir o wrapper por meio do ambiente. 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="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
Para remover um wrapper persistido, limpe OPENCLAW_WRAPPER durante a reinstalação:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
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,--force,--wait <duration>,--jsongateway uninstall|start|stop:--json
Comportamento do ciclo de vida
- Use
gateway restartpara reiniciar um serviço gerenciado. Não encadeiegateway stopegateway startcomo substituto de reinício; no macOS,gateway stopdesativa intencionalmente o LaunchAgent antes de pará-lo. gateway restart --safesolicita que o Gateway em execução faça uma pré-verificação do trabalho ativo do OpenClaw e adie o reinício até que a entrega de respostas, execuções embutidas e execuções de tarefas sejam drenadas.--safenão pode ser combinado com--forcenem--wait.gateway restart --wait 30ssubstitui o orçamento configurado de drenagem de reinício para esse reinício. Números sem unidade são milissegundos; unidades comos,mehsão aceitas.--wait 0espera indefinidamente.gateway restart --forceignora a drenagem de trabalho ativo e reinicia imediatamente. Use quando um operador já tiver inspecionado os bloqueadores de tarefa 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
- 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 do ambiente do serviço. - Se a autenticação por token exige um token e o SecretRef de token configurado não pode ser 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.passwordapoiado por SecretRef em vez de--passwordinline. - No modo de autenticação inferida,
OPENCLAW_GATEWAY_PASSWORDapenas no shell não flexibiliza os requisitos de token de instalação; use configuração durável (gateway.auth.passwordouenvde configuração) ao instalar um serviço gerenciado. - Se tanto
gateway.auth.tokenquantogateway.auth.passwordestiverem configurados egateway.auth.modenão estiver definido, a instalação será 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.
Somente gateways com descoberta Bonjour habilitada (padrão) anunciam o beacon.
Registros de descoberta de área ampla incluem (TXT):
role(dica de função do gateway)transport(dica de transporte, por exemplo,gateway)gatewayPort(porta WebSocket, geralmente18789)sshPort(opcional; clientes usam22como destino SSH padrão quando ela está ausente)tailnetDns(nome de host MagicDNS, quando disponível)gatewayTls/gatewayTlsSha256(TLS habilitado + impressão digital do certificado)cliPath(dica de instalação remota gravada na zona de área ampla)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanSaída legível por máquina (também desativa estilo/spinner).
Exemplos:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'