CLI do Gateway
O Gateway é o servidor WebSocket do OpenClaw (canais, nodes, sessões, hooks). Os subcomandos desta página ficam sobopenclaw gateway ….
Documentação relacionada:
Executar o Gateway
Execute um processo local do Gateway:- 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 corrompida 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 na configuração e se recusa a “adivinhar local” por você. - Bind além de loopback sem autenticação é bloqueado (proteção de segurança).
SIGUSR1dispara uma reinicialização em processo quando autorizado (commands.restarté habilitado por padrão; definacommands.restart: falsepara bloquear reinicialização manual, enquanto gateway tool/config apply/update continuam permitidos).- Os handlers de
SIGINT/SIGTERMparam 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 raw, restaure o terminal antes de sair.
Opções
--port <port>: porta WebSocket (o padrão vem de config/env; normalmente18789).--bind <loopback|lan|tailnet|auto|custom>: modo de bind do listener.--auth <token|password>: substituição do modo de autenticação.--token <token>: substituição do token (também defineOPENCLAW_GATEWAY_TOKENpara o processo).--password <password>: substituição da senha. Aviso: senhas inline podem ficar expostas em listagens locais de processos.--password-file <path>: lê a senha do gateway de um arquivo.--tailscale <off|serve|funnel>: expõe o Gateway via Tailscale.--tailscale-reset-on-exit: redefine a configuração serve/funnel do Tailscale ao encerrar.--allow-unconfigured: permite iniciar o gateway semgateway.mode=localna configuração. Isso ignora a proteção de inicialização apenas para bootstrap ad hoc/dev; não grava nem repara o arquivo de configuração.--dev: cria uma configuração + workspace de dev se estiverem ausentes (ignoraBOOTSTRAP.md).--reset: redefine configuração + credenciais + sessões + workspace de dev (requer--dev).--force: mata qualquer listener existente na porta selecionada antes de iniciar.--verbose: logs detalhados.--cli-backend-logs: mostra apenas logs do backend da CLI no console (e habilita stdout/stderr).--claude-cli-logs: alias obsoleto para--cli-backend-logs.--ws-log <auto|full|compact>: estilo de log do websocket (padrãoauto).--compact: alias para--ws-log compact.--raw-stream: registra eventos brutos de stream do modelo em jsonl.--raw-stream-path <path>: caminho jsonl do stream bruto.
Consultar um Gateway em execução
Todos os comandos de consulta usam WebSocket RPC. Modos de saída:- Padrão: legível para 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.
--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: aguarda uma resposta “final” (chamadas de agente).
--url, a CLI não usa fallback para credenciais de config ou ambiente.
Passe --token ou --password explicitamente. Ausência de credenciais explícitas é um erro.
gateway health
gateway usage-cost
Busca resumos de custo de uso nos logs de sessão.
--days <days>: número de dias a incluir (padrão30).
gateway status
gateway status mostra o serviço do Gateway (launchd/systemd/schtasks) mais uma sondagem RPC opcional.
--url <url>: adiciona um alvo explícito de sondagem. O remoto configurado + localhost ainda são sondados.--token <token>: autenticação por token para a sondagem.--password <password>: autenticação por senha para a sondagem.--timeout <ms>: timeout da sondagem (padrão10000).--no-probe: ignora a sondagem RPC (visualização somente do serviço).--deep: também examina serviços em nível de sistema.--require-rpc: retorna código não zero quando a sondagem RPC falha. Não pode ser combinado com--no-probe.
gateway statuscontinua disponível para diagnóstico mesmo quando a configuração local da CLI está ausente ou inválida.gateway statusresolve SecretRefs de autenticação configurados para autenticação da sondagem quando possível.- Se um SecretRef de autenticação obrigatório não for resolvido neste caminho de comando,
gateway status --jsoninformarpc.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 auth-ref não resolvido são suprimidos para evitar falsos positivos.
- Use
--require-rpcem scripts e automações quando um serviço em escuta não for suficiente e você precisar que o próprio RPC do Gateway esteja íntegro. --deepadiciona uma varredura best-effort para instalações extras de launchd/systemd/schtasks. Quando vários serviços parecidos com 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.- A saída humana inclui o caminho resolvido do arquivo de log mais o snapshot dos caminhos/validade de configuração da CLI versus serviço para ajudar a diagnosticar drift de perfil ou state-dir.
- Em instalações Linux com systemd, as verificações de drift de autenticação do serviço leem valores
Environment=eEnvironmentFile=da unit (incluindo%h, caminhos entre aspas, múltiplos arquivos e arquivos opcionais com-). - As verificações de drift resolvem SecretRefs de
gateway.auth.tokenusando env de runtime mesclado (env do comando do serviço primeiro, depois fallback para env do processo). - Se a autenticação por token não estiver efetivamente ativa (modo explícito
gateway.auth.modedepassword/none/trusted-proxy, ou modo ausente em que a senha pode vencer e nenhum candidato a token pode vencer), as verificações de drift de token ignoram a resolução do token de configuração.
gateway probe
gateway probe é o comando de “depurar tudo”. Ele sempre sonda:
- o gateway remoto configurado por você (se definido), e
- localhost (loopback) mesmo que um remoto esteja configurado.
--url, esse alvo explícito é adicionado antes de ambos. A saída humana rotula os
alvos como:
URL (explicit)Remote (configured)ouRemote (configured, inactive)Local loopback
Reachable: yessignifica que pelo menos um alvo aceitou uma conexão WebSocket.RPC: oksignifica que chamadas RPC detalhadas (health/status/system-presence/config.get) também tiveram sucesso.RPC: limited - missing scope: operator.readsignifica que a conexão teve sucesso, mas o RPC detalhado é limitado por escopo. Isso é informado como alcance degradado, não falha total.- O código de saída é não zero apenas quando nenhum alvo sondado está acessível.
--json):
- Nível superior:
ok: pelo menos um alvo está acessível.degraded: pelo menos um alvo teve RPC detalhado limitado por escopo.primaryTargetId: melhor alvo para tratar como vencedor ativo nesta ordem: URL explícita, túnel SSH, remoto configurado, depois loopback local.warnings[]: registros de aviso best-effort comcode,messageetargetIdsopcionais.network: dicas de URL de loopback local/tailnet derivadas da configuração atual e da rede do host.discovery.timeoutMsediscovery.count: orçamento/contagem de descoberta real usado nesta execução de sondagem.
- Por alvo (
targets[].connect):ok: alcance após conexão + classificação degradada.rpcOk: sucesso total do RPC detalhado.scopeLimited: falha do RPC detalhado devido à ausência de escopo de operador.
ssh_tunnel_failed: a configuração do túnel SSH falhou; o comando voltou para sondagens diretas.multiple_gateways: mais de um alvo estava acessível; isso é incomum, a menos que você execute intencionalmente perfis isolados, como um bot de resgate.auth_secretref_unresolved: um SecretRef de autenticação configurado não pôde ser resolvido para um alvo com falha.probe_scope_limited: a conexão WebSocket teve sucesso, mas o RPC detalhado foi limitado pela ausência do escopooperator.read.
Remoto via SSH (paridade com app 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 a loopback) fique acessível emws://127.0.0.1:<port>.
Equivalente na CLI:
--ssh <target>:user@hostouuser@host:port(a porta é22por padrão).--ssh-identity <path>: arquivo de identidade.--ssh-auto: escolhe 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.
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC de baixo nível.
--params <json>: string de objeto JSON para params (padrão{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
--paramsprecisa ser JSON válido.--expect-finalé principalmente para RPCs no estilo de agente que fazem streaming de eventos intermediários antes de uma carga final.
Gerenciar o serviço do Gateway
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--force,--jsongateway uninstall|start|stop|restart:--json
gateway installoferece suporte a--port,--runtime,--token,--force,--json.- 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 exigir um token e o token SecretRef configurado não puder ser resolvido, a instalação falha de forma fechada em vez de persistir fallback em texto simples.
- Para autenticação por senha em
gateway run, prefiraOPENCLAW_GATEWAY_PASSWORD,--password-fileou umgateway.auth.passwordcom SecretRef em vez de--passwordinline. - No modo de autenticação inferido,
OPENCLAW_GATEWAY_PASSWORDapenas do shell não relaxa os requisitos de token da instalação; use configuração persistente (gateway.auth.passwordouenvda configuração) ao instalar um serviço gerenciado. - Se
gateway.auth.tokenegateway.auth.passwordestiverem ambos configurados egateway.auth.modenão estiver definido, a instalação é bloqueada até que o modo seja definido explicitamente. - Os comandos de ciclo de vida aceitam
--jsonpara automação.
Descobrir gateways (Bonjour)
gateway discover varre beacons do Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): escolha um domínio (exemplo:
openclaw.internal.) e configure split DNS + um servidor DNS; consulte /gateway/bonjour
role(dica do papel do gateway)transport(dica do transporte, por exemplogateway)gatewayPort(porta WebSocket, normalmente18789)sshPort(opcional; clientes usam22como padrão para alvos SSH quando ausente)tailnetDns(hostname do MagicDNS, quando disponível)gatewayTls/gatewayTlsSha256(TLS habilitado + fingerprint do certificado)cliPath(dica de instalação remota gravada na zona wide-area)
gateway discover
--timeout <ms>: timeout por comando (browse/resolve); padrão2000.--json: saída legível por máquina (também desabilita estilo/spinner).
- A CLI varre
local.mais o domínio wide-area configurado quando houver um habilitado. wsUrlna saída JSON é derivado do endpoint de serviço resolvido, não de dicas somente TXT comolanHostoutailnetDns.- Em mDNS
local.,sshPortecliPathsó são transmitidos quandodiscovery.mdns.modeéfull. O DNS-SD wide-area ainda gravacliPath;sshPortcontinua opcional lá também.