CLI de la passerelle
La passerelle est le serveur WebSocket d’OpenClaw (canaux, nœuds, sessions, hooks). Les sous-commandes de cette page se trouvent sousopenclaw gateway ….
Documentation associée :
Exécuter la passerelle
Exécutez un processus de passerelle local :- Par défaut, la passerelle refuse de démarrer sauf si
gateway.mode=localest défini dans~/.openclaw/openclaw.json. Utilisez--allow-unconfiguredpour des exécutions ad hoc/de dev. openclaw onboard --mode localetopenclaw setupsont censés écriregateway.mode=local. Si le fichier existe mais quegateway.modeest absent, traitez cela comme une configuration cassée ou écrasée et réparez-la au lieu de supposer implicitement le mode local.- Si le fichier existe et que
gateway.modeest absent, la passerelle traite cela comme un dommage de configuration suspect et refuse de « deviner local » à votre place. - Une liaison au-delà du loopback sans auth est bloquée (garde-fou de sécurité).
SIGUSR1déclenche un redémarrage dans le processus lorsqu’il est autorisé (commands.restartest activé par défaut ; définissezcommands.restart: falsepour bloquer le redémarrage manuel, tandis que l’application/mise à jour de l’outil/config de passerelle reste autorisée).- Les gestionnaires
SIGINT/SIGTERMarrêtent le processus de passerelle, mais ils ne restaurent pas un éventuel état personnalisé du terminal. Si vous encapsulez la CLI avec une TUI ou une entrée en mode brut, restaurez le terminal avant de quitter.
Options
--port <port>: port WebSocket (la valeur par défaut provient de la config/env ; généralement18789).--bind <loopback|lan|tailnet|auto|custom>: mode de liaison de l’écouteur.--auth <token|password>: remplacement du mode d’authentification.--token <token>: remplacement du jeton (définit égalementOPENCLAW_GATEWAY_TOKENpour le processus).--password <password>: remplacement du mot de passe. Avertissement : les mots de passe en ligne peuvent être exposés dans les listes locales de processus.--password-file <path>: lire le mot de passe de la passerelle depuis un fichier.--tailscale <off|serve|funnel>: exposer la passerelle via Tailscale.--tailscale-reset-on-exit: réinitialiser la configuration Tailscale serve/funnel à l’arrêt.--allow-unconfigured: autoriser le démarrage de la passerelle sansgateway.mode=localdans la configuration. Cela contourne le garde-fou de démarrage uniquement pour un bootstrap ad hoc/de dev ; cela n’écrit ni ne répare le fichier de configuration.--dev: créer une config + un espace de travail de dev s’ils sont absents (ignoreBOOTSTRAP.md).--reset: réinitialiser la config de dev + les identifiants + les sessions + l’espace de travail (nécessite--dev).--force: tuer tout écouteur existant sur le port sélectionné avant de démarrer.--verbose: journaux détaillés.--cli-backend-logs: afficher uniquement les journaux du backend CLI dans la console (et activer stdout/stderr).--claude-cli-logs: alias obsolète pour--cli-backend-logs.--ws-log <auto|full|compact>: style de journal WebSocket (par défautauto).--compact: alias pour--ws-log compact.--raw-stream: journaliser les événements bruts du flux de modèle vers jsonl.--raw-stream-path <path>: chemin jsonl du flux brut.
Interroger une passerelle en cours d’exécution
Toutes les commandes d’interrogation utilisent la RPC WebSocket. Modes de sortie :- Par défaut : lisible par l’humain (coloré dans un TTY).
--json: JSON lisible par machine (sans style/spinner).--no-color(ouNO_COLOR=1) : désactiver l’ANSI tout en conservant la mise en page lisible.
--url <url>: URL WebSocket de la passerelle.--token <token>: jeton de la passerelle.--password <password>: mot de passe de la passerelle.--timeout <ms>: délai/budget (varie selon la commande).--expect-final: attendre une réponse « finale » (appels d’agent).
--url, la CLI ne retombe pas sur les identifiants de configuration ou d’environnement.
Passez explicitement --token ou --password. L’absence d’identifiants explicites est une erreur.
gateway health
gateway usage-cost
Récupérez des résumés de coût d’utilisation depuis les journaux de session.
--days <days>: nombre de jours à inclure (par défaut30).
gateway status
gateway status affiche le service de passerelle (launchd/systemd/schtasks) plus une probe RPC facultative.
--url <url>: ajouter une cible de probe explicite. La cible distante configurée + localhost sont toujours sondés.--token <token>: auth par jeton pour la probe.--password <password>: auth par mot de passe pour la probe.--timeout <ms>: délai de probe (par défaut10000).--no-probe: ignorer la probe RPC (vue service uniquement).--deep: analyser aussi les services au niveau système.--require-rpc: quitter avec un code non nul si la probe RPC échoue. Ne peut pas être combiné avec--no-probe.
gateway statusreste disponible pour le diagnostic même lorsque la configuration CLI locale est absente ou invalide.gateway statusrésout les SecretRef d’authentification configurés pour l’auth de probe lorsque c’est possible.- Si un SecretRef d’auth requis n’est pas résolu dans ce chemin de commande,
gateway status --jsonsignalerpc.authWarninglorsque la connectivité/auth de probe échoue ; passez explicitement--token/--passwordou résolvez d’abord la source du secret. - Si la probe réussit, les avertissements d’auth-ref non résolus sont masqués pour éviter les faux positifs.
- Utilisez
--require-rpcdans les scripts et automatisations lorsqu’un service à l’écoute ne suffit pas et que vous avez besoin que la RPC de la passerelle elle-même soit saine. --deepajoute une analyse best-effort des installations launchd/systemd/schtasks supplémentaires. Lorsque plusieurs services de type passerelle sont détectés, la sortie lisible affiche des conseils de nettoyage et avertit que la plupart des configurations ne devraient exécuter qu’une passerelle par machine.- La sortie lisible inclut le chemin résolu du journal de fichier ainsi qu’un instantané des chemins/validités de configuration CLI-vs-service pour aider à diagnostiquer une dérive de profil ou de répertoire d’état.
- Sur les installations Linux systemd, les vérifications de dérive d’auth de service lisent à la fois les valeurs
Environment=etEnvironmentFile=de l’unité (y compris%h, les chemins entre guillemets, plusieurs fichiers et les fichiers facultatifs-). - Les vérifications de dérive résolvent les SecretRef
gateway.auth.tokenà l’aide de l’environnement d’exécution fusionné (env de commande du service d’abord, puis repli sur l’env du processus). - Si l’auth par jeton n’est pas effectivement active (mode explicite
gateway.auth.modedepassword/none/trusted-proxy, ou mode non défini où le mot de passe peut l’emporter et aucun candidat jeton ne peut l’emporter), les vérifications de dérive de jeton ignorent la résolution du jeton de configuration.
gateway probe
gateway probe est la commande « tout déboguer ». Elle sonde toujours :
- votre passerelle distante configurée (si définie), et
- le loopback localhost même si une cible distante est configurée.
--url, cette cible explicite est ajoutée avant les deux. La sortie lisible étiquette les
cibles comme :
URL (explicit)Remote (configured)ouRemote (configured, inactive)Local loopback
Reachable: yessignifie qu’au moins une cible a accepté une connexion WebSocket.RPC: oksignifie que les appels RPC de détail (health/status/system-presence/config.get) ont également réussi.RPC: limited - missing scope: operator.readsignifie que la connexion a réussi mais que la RPC de détail est limitée par la portée. Cela est signalé comme une joignabilité dégradée, et non comme un échec complet.- Le code de sortie n’est non nul que lorsqu’aucune cible sondée n’est joignable.
--json) :
- Niveau supérieur :
ok: au moins une cible est joignable.degraded: au moins une cible avait une RPC de détail limitée par la portée.primaryTargetId: meilleure cible à traiter comme gagnante active dans cet ordre : URL explicite, tunnel SSH, distante configurée, puis local loopback.warnings[]: enregistrements d’avertissement best-effort aveccode,messageet éventuellementtargetIds.network: indications d’URL local loopback/tailnet dérivées de la config actuelle et du réseau de l’hôte.discovery.timeoutMsetdiscovery.count: budget/résultat de découverte réellement utilisés pour ce passage de probe.
- Par cible (
targets[].connect) :ok: joignabilité après connexion + classification dégradée.rpcOk: succès complet de la RPC de détail.scopeLimited: échec de la RPC de détail dû à l’absence de portée opérateur.
ssh_tunnel_failed: l’établissement du tunnel SSH a échoué ; la commande a basculé sur des probes directes.multiple_gateways: plusieurs cibles étaient joignables ; c’est inhabituel sauf si vous exécutez intentionnellement des profils isolés, comme un bot de secours.auth_secretref_unresolved: un SecretRef d’auth configuré n’a pas pu être résolu pour une cible en échec.probe_scope_limited: la connexion WebSocket a réussi, mais la RPC de détail était limitée par l’absence de portéeoperator.read.
Distant via SSH (parité avec l’app Mac)
Le mode « Remote over SSH » de l’app macOS utilise une redirection de port locale afin que la passerelle distante (qui peut être liée uniquement au loopback) devienne joignable àws://127.0.0.1:<port>.
Équivalent CLI :
--ssh <target>:user@hostouuser@host:port(le port vaut22par défaut).--ssh-identity <path>: fichier d’identité.--ssh-auto: choisir le premier hôte de passerelle découvert comme cible SSH depuis le point de terminaison de découverte résolu (local.plus le domaine étendu configuré, le cas échéant). Les indications TXT-only sont ignorées.
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Assistant RPC de bas niveau.
--params <json>: chaîne d’objet JSON pour les paramètres (par défaut{})--url <url>--token <token>--password <password>--timeout <ms>--expect-final--json
--paramsdoit être un JSON valide.--expect-finalest principalement destiné aux RPC de style agent qui diffusent des événements intermédiaires avant une charge utile finale.
Gérer le service de passerelle
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 installprend en charge--port,--runtime,--token,--force,--json.- Lorsque l’auth par jeton nécessite un jeton et que
gateway.auth.tokenest géré par SecretRef,gateway installvalide que le SecretRef peut être résolu mais ne persiste pas le jeton résolu dans les métadonnées d’environnement du service. - Si l’auth par jeton nécessite un jeton et que le SecretRef de jeton configuré n’est pas résolu, l’installation échoue en mode fermé au lieu de persister un texte brut de secours.
- Pour l’auth par mot de passe sur
gateway run, préférezOPENCLAW_GATEWAY_PASSWORD,--password-fileou ungateway.auth.passwordadossé à SecretRef plutôt qu’un--passwordinline. - En mode d’auth déduit,
OPENCLAW_GATEWAY_PASSWORDlimité au shell n’assouplit pas les exigences de jeton pour l’installation ; utilisez une config durable (gateway.auth.passwordou configenv) lors de l’installation d’un service géré. - Si
gateway.auth.tokenetgateway.auth.passwordsont tous deux configurés et quegateway.auth.moden’est pas défini, l’installation est bloquée jusqu’à ce que le mode soit défini explicitement. - Les commandes de cycle de vie acceptent
--jsonpour les scripts.
Découvrir des passerelles (Bonjour)
gateway discover analyse les balises de passerelle (_openclaw-gw._tcp).
- DNS-SD multicast :
local. - DNS-SD unicast (Wide-Area Bonjour) : choisissez un domaine (exemple :
openclaw.internal.) et configurez un split DNS + un serveur DNS ; voir /gateway/bonjour
role(indication du rôle de la passerelle)transport(indication du transport, par ex.gateway)gatewayPort(port WebSocket, généralement18789)sshPort(facultatif ; les clients définissent par défaut les cibles SSH sur22lorsqu’il est absent)tailnetDns(nom d’hôte MagicDNS, lorsqu’il est disponible)gatewayTls/gatewayTlsSha256(TLS activé + empreinte du certificat)cliPath(indication d’installation distante écrite dans la zone wide-area)
gateway discover
--timeout <ms>: délai par commande (browse/resolve) ; par défaut2000.--json: sortie lisible par machine (désactive également le style/spinner).
- La CLI analyse
local.plus le domaine wide-area configuré lorsqu’il est activé. wsUrldans la sortie JSON est dérivé du point de terminaison de service résolu, et non d’indications TXT-only telles quelanHostoutailnetDns.- En mDNS
local.,sshPortetcliPathne sont diffusés que lorsquediscovery.mdns.modevautfull. Le DNS-SD wide-area écrit toujourscliPath;sshPorty reste également facultatif.