GatewayGateway
Le Gateway est le serveur WebSocket d’OpenClaw (canaux, nœuds, sessions, hooks). Les sous-commandes de cette page se trouvent sous GatewayOpenClawopenclaw gateway ….
Configuration mDNS locale + DNS-SD étendu.
Comment OpenClaw annonce et trouve les gateways.
Clés de configuration de premier niveau du gateway.
Exécuter le Gateway
Section intitulée « Exécuter le Gateway »Exécuter un processus Gateway local :
openclaw gatewayAlias pour le premier plan :
openclaw gateway runComportement au démarrage
- Par défaut, le Gateway refuse de démarrer à moins que
gateway.mode=localne soit défini dans~/.openclaw/openclaw.json. Utilisez--allow-unconfiguredpour les exécutions ad hoc/dev. openclaw onboard --mode localetopenclaw setupsont censés écriregateway.mode=local. Si le fichier existe mais quegateway.modeest manquant, considérez cela comme une configuration cassée ou corrompue et réparez-la au lieu d’assumer implicitement le mode local.- Si le fichier existe et que
gateway.modeest manquant, le Gateway considère cela comme une suspicion de dommage sur la configuration et refuse de « deviner le mode local » pour vous. - La liaison au-delà du loopback sans authentification est bloquée (garde de sécurité).
SIGUSR1déclenche un redémarrage en cours de processus lorsqu’il est autorisé (commands.restartest activé par défaut ; définissezcommands.restart: falsepour bloquer le redémarrage manuel, tandis que les commandes de configuration/mise à jour de l’outil/gateway restent autorisées).- Les gestionnaires
SIGINT/SIGTERMarrêtent le processus du gateway, mais ils ne restaurent aucun état de terminal personnalisé. Si vous encapsulez le CLI avec une TUI ou une saisie en mode brut, restaurez le terminal avant de quitter.
Redémarrer le Gateway
Section intitulée « Redémarrer le Gateway »openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --safe demande au Gateway en cours d’exécution d’effectuer une vérification préliminaire des travaux actifs OpenClaw avant de redémarrer. Si des opérations en file d’attente, la livraison de réponses, les exécutions intégrées ou les exécutions de tâches sont actives, le Gateway signale les blocants, fusionne les demandes de redémarrage sécurisé en double et redémarre une fois que les travaux actifs sont écoulés. restart simple conserve le comportement existant du gestionnaire de services pour la compatibilité. Utilisez --force uniquement lorsque vous souhaitez explicitement le chemin de substitution immédiat.
openclaw gateway restart --safe --skip-deferral exécute le même redémarrage coordonné OpenClaw que --safe, mais contourne la porte de report de travail actif afin que le Gateway émette le redémarrage immédiatement même lorsque des blocants sont signalés. Utilisez-le comme l’échappatoire de l’opérateur lorsqu’un report a été épinglé par une exécution de tâche bloquée et que --safe seul attendrait indéfiniment. --skip-deferral nécessite --safe.
Profilage du Gateway
Section intitulée « Profilage du Gateway »- Définissez
OPENCLAW_GATEWAY_STARTUP_TRACE=1pour consigner les timings de phase lors du démarrage du Gateway, y compris le délaieventLoopMaxpar phase et les timings de la table de recherche des plugins pour l’index installé, le registre de manifestes, la planification du démarrage et le travail de la carte du propriétaire. - Définissez
OPENCLAW_GATEWAY_RESTART_TRACE=1pour enregistrer les lignesrestart trace:liées au redémarrage pour la gestion des signaux de redémarrage, la vidange du travail actif, les phases d’arrêt, le prochain démarrage, le chronométrage de la disponibilité et les métriques de mémoire. - Définissez
OPENCLAW_DIAGNOSTICS=timelineavecOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>pour écrire une chronologie de diagnostic de démarrage JSONL au meilleur effort pour des faisceaux de QA externes. Vous pouvez également activer le drapeau avecdiagnostics.flags: ["timeline"]dans la configuration ; le chemin est toujours fourni par l’environnement. AjoutezOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1pour inclure les échantillons de la boucle d’événements. - Exécutez d’abord
pnpm build, puispnpm test:startup:gateway -- --runs 5 --warmup 1pour comparer les performances de démarrage du Gateway par rapport à l’entrée CLI intégrée. Le benchmark enregistre la première sortie de processus,/healthz,/readyz, les minutages de trace de démarrage, le délai de la boucle d’événements et les détails de minutage de la table de recherche des plugins. - Exécutez d’abord
pnpm build, puispnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5pour comparer les performances du redémarrage du Gateway en cours de processus par rapport à l’entrée CLI intégrée sur macOS ou Linux. Le benchmark de redémarrage utilise SIGUSR1, active les traces de démarrage et de redémarrage dans le processus enfant, et enregistre le prochain/healthz, le prochain/readyz, le temps d’arrêt, la minutage de disponibilité, le CPU, le RSS et les métriques de trace de redémarrage. - Considérez
/healthzcomme une vérification de vivacité et/readyzcomme une disponibilité utilisable. Les lignes de trace et la sortie du benchmark sont destinées à l’attribution de responsabilité ; ne considérez pas un intervalle de trace ou un échantillon comme une conclusion de performance complète.
Interroger un Gateway en cours d’exécution
Section intitulée « Interroger un Gateway en cours d’exécution »Toutes les commandes de requête utilisent le RPC WebSocket.
- Par défaut : lisible par l’homme (coloré dans un TTY).
--json: JSON lisible par machine (sans style/indicateur d’activité).--no-color(ouNO_COLOR=1) : désactive ANSI tout en conservant la mise en page humaine.
- `—url
: URL WebSocket du Gateway. -—token
: jeton du Gateway. -—password
: mot de passe du Gateway. -—timeout
: délai/budget (varie par commande). -—expect-final` : attendre une réponse « finale » (appels d’agent).
gateway health
Section intitulée « gateway health »openclaw gateway health --url ws://127.0.0.1:18789Le point de terminaison HTTP /healthz est une sonde de vivacité : il renvoie une réponse une fois que le serveur peut répondre au HTTP. Le point de terminaison HTTP /readyz est plus strict et reste rouge pendant que les sidecars de plugins de démarrage, les canaux ou les hooks configurés sont encore en cours de stabilisation. Les réponses de préparation détaillées locales ou authentifiées incluent un bloc de diagnostic eventLoop avec le délai de la boucle d’événements, l’utilisation de la boucle d’événements, le ratio de cœurs CPU et un indicateur degraded.
gateway usage-cost
Section intitulée « gateway usage-cost »Récupérer les résumés des coûts d’utilisation à partir des journaux de session.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --jsongateway stability
Section intitulée « gateway stability »Récupérer l’enregistreur de stabilité de diagnostic récent à partir d’un Gateway en cours d’exécution.
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonConfidentialité et comportement des bundles
- Les enregistrements conservent les métadonnées opérationnelles : noms d’événements, comptages, tailles en octets, lectures de mémoire, état de la file d’attente/session, noms de canal/plugin, et résumés de session expurgés. Ils ne conservent pas le texte du chat, les corps de webhook, les sorties d’outil, les corps de requête ou de réponse bruts, les jetons, les cookies, les valeurs secrètes, les noms d’hôte ou les identifiants de session bruts. Définissez
diagnostics.enabled: falsepour désactiver totalement l’enregistreur. - Lors des sorties fatales du Gateway, des délais d’arrêt et des échecs de démarrage au redémarrage, OpenClaw écrit le même instantané de diagnostic dans
~/.openclaw/logs/stability/openclaw-stability-*.jsonlorsque l’enregistreur a des événements. Inspectez le bundle le plus récent avecopenclaw gateway stability --bundle latest;--limit,--typeet--since-seqs’appliquent également à la sortie du bundle.
gateway diagnostics export
Section intitulée « gateway diagnostics export »Créez un fichier zip de diagnostic local conçu pour être joint aux rapports de bugs. Pour le modèle de confidentialité et le contenu du bundle, consultez Export de diagnostics.
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --jsonL’export contient un manifeste, un résumé Markdown, la forme de la configuration, les détails nettoyés de la configuration, les résumés des journaux nettoyés, les instantanés d’état/health du Gateway nettoyés et le bundle de stabilité le plus récent s’il en existe un.
Il est destiné à être partagé. Il conserve des détails opérationnels qui aident au débogage, tels que les champs de journal OpenClaw sûrs, les noms de sous-systèmes, les codes d’état, les durées, les modes configurés, les ports, les identifiants de plugins, les identifiants de fournisseur, les paramètres de fonctionnalités non secrets et les messages de journal opérationnels expurgés. Il omet ou expurge le texte de chat, les corps de webhook, les sorties d’outils, les identifiants, les cookies, les identifiants de compte/message, le texte d’instruction/invite, les noms d’hôte et les valeurs secrètes. Lorsqu’un message de style LogTape ressemble au texte de la charge utile utilisateur/chat/outils, l’exportation conserve uniquement le fait qu’un message a été omis ainsi que son nombre d’octets.
gateway status
Section intitulée « gateway status »gateway status affiche le service Gateway (launchd/systemd/schtasks) ainsi qu’une sonde facultative de la capacité de connectivité/authentification.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpcSémantique de l'état
gateway statusreste disponible pour le diagnostic, même lorsque la configuration locale de la CLI est manquante ou non valide.- Par défaut,
gateway statusprouve l’état du service, la connexion WebSocket et la capacité d’auth visible au moment de la poignée de main. Il ne prouve pas les opérations de lecture/écriture/administration. - Les sondes de diagnostic sont non mutantes pour l’authentification initiale de l’appareil : elles réutilisent un jeton d’appareil existant en cache si celui-ci existe, mais elles ne créent pas une nouvelle identité d’appareil CLI ni un enregistrement d’appairage d’appareil en lecture seule juste pour vérifier l’état.
gateway statusrésout les SecretRefs d’auth configurés pour l’auth de la sonde lorsque cela est possible.- Si un SecretRef d’auth requis n’est pas résolu dans ce chemin de commande,
gateway status --jsonsignalerpc.authWarninglorsque la connectivité/l’auth de la sonde échoue ; passez--token/--passwordexplicitement ou résolvez d’abord la source du secret. - Si la sonde réussit, les avertissements de référence d’auth non résolus sont supprimés pour éviter les faux positifs.
- Utilisez
--require-rpcdans les scripts et l’automatisation lorsqu’un service d’écoute ne suffit pas et que vous avez également besoin que les appels RPC avec une portée de lecture soient en bonne santé. --deepajoute une analyse de « meilleur effort » pour les installations supplémentaires launchd/systemd/schtasks. Lorsque plusieurs services de type passerelle sont détectés, la sortie humaine imprime des conseils de nettoyage et avertit que la plupart des configurations doivent exécuter une passerelle par machine.--deepsignale également un transfert de redémarrage récent du superviseur de Gateway lorsque le processus du service s’est terminé proprement pour un redémarrage externe du superviseur.--deepexécute la validation de la configuration en mode conscient des plugins (pluginValidation: "full") et signale les avertissements configurés du manifeste du plugin (par exemple, métadonnées de configuration de channel manquantes) afin que les contrôles de fumée d’installation et de mise à jour les détectent. Par défaut,gateway statusconserve le chemin rapide en lecture seule qui ignore la validation des plugins.- La sortie humaine inclut le chemin de fichier journal résolu ainsi que l’instantané des chemins/validité de la configuration CLI-vs-service pour aider à diagnostiquer la dérive du profil ou du répertoire d’état.
LinuxVérifications de dérive d'auth systemd Linux
- Sur les installations systemd Linux, les vérifications de dérive d’auth du service lisent les valeurs
Environment=etEnvironmentFile=de l’unité (y compris%h, chemins entre guillemets, fichiers multiples et fichiers-facultatifs). - Les vérifications de dérive résolvent les SecretRefs
gateway.auth.tokenen utilisant l’environnement d’exécution fusionné (env de commande de service en premier, puis repli sur env de processus). - Si l’auth par jeton n’est pas effectivement active (
gateway.auth.modeexplicite depassword/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
Section intitulée « gateway probe »gateway probe est la commande « tout déboguer ». Elle sonde toujours :
- votre passerelle distante configurée (si définie), et
- localhost (boucle locale) même si une passerelle distante est configurée.
Si vous passez --url, cette cible explicite est ajoutée avant les deux autres. La sortie humaine étiquette les cibles comme :
URL (explicit)Remote (configured)ouRemote (configured, inactive)Local loopback
openclaw gateway probeopenclaw gateway probe --jsonInterprétation
Reachable: yessignifie qu’au moins une cible a accepté une connexion WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyindique ce que la sonde a pu prouver concernant l’authentification. C’est distinct de l’accessibilité.Read probe: oksignifie que les appels RPC de détail de portée de lecture (health/status/system-presence/config.get) ont également réussi.Read probe: limited - missing scope: operator.readsignifie que la connexion a réussi mais que le RPC de portée de lecture est limité. Cela est signalé comme une accessibilité dégradée, et non comme un échec total.Read probe: failedaprèsConnect: oksignifie que le Gateway a accepté la connexion WebSocket, mais que les diagnostics de lecture ultérieurs ont expiré ou échoué. Il s’agit également d’une accessibilité dégradée, et non d’un Gateway injoignable.- Comme
gateway status, la sonde réutilise l’authentification d’appareil existante en cache mais ne crée pas d’identité d’appareil ou d’état d’appariement pour la première fois. - Le code de sortie est non nul uniquement lorsqu’aucune cible sondée n’est accessible.
Sortie JSON
Niveau supérieur :
ok: au moins une cible est accessible.degradedRPC : au moins une cible a accepté une connexion mais n’a pas terminé les diagnostics RPC détaillés complets.capability: meilleure capacité vue sur les cibles accessibles (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scope, ouunknown).primaryTargetId: meilleure cible à traiter comme le gagnant actif dans cet ordre : URL explicite, tunnel SSH, distant configuré, puis local loopback.warnings[]: enregistrements d’avertissement de meilleure effort aveccode,message, et optionneltargetIds.network: indices d’URL local loopback/tailnet dérivés de la configuration actuelle et du réseau hôte.discovery.timeoutMsetdiscovery.count: le nombre réel de budget/résultat de découverte utilisé pour cette passe de sonde.
Par cible (targets[].connect) :
ok: accessibilité après connexion + classification dégradée.rpcOkRPC : succès RPC détaillé complet.scopeLimitedRPC : échec du RPC détaillé dû à une portée d’opérateur manquante.
Par cible (targets[].auth) :
role: rôle d’authentification signalé danshello-oksi disponible.scopes: portées accordées signalées danshello-oksi disponible.capability: la classification de capacité d’authentification exposée pour cette cible.
Codes d'avertissement courants
ssh_tunnel_failed: échec de la configuration du tunnel SSH ; la commande est revenue à des sondes directes.multiple_gateways: plus d’une cible était accessible ; c’est inhabituel sauf si vous exécutez intentionnellement des profils isolés, tels qu’un robot de secours.auth_secretref_unresolved: une auth SecretRef configurée n’a pas pu être résolue pour une cible en échec.probe_scope_limited: la connexion WebSocket a réussi, mais la sonde de lecture était limitée par l’absence deoperator.read.
À distance via SSH (parité avec l’app Mac)
Section intitulée « À distance via SSH (parité avec l’app Mac) »Le mode “Remote over SSH” de l’application macOS utilise un transfert de port local pour que la passerelle distante (qui peut être liée uniquement à la boucle locale) devienne accessible à ws://127.0.0.1:<port>.
Équivalent CLI :
openclaw gateway probe --ssh user@gateway-hostConfiguration (facultatif, utilisé par défaut) :
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Section intitulée « gateway call <method> »Assistant RPC de bas niveau.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"sinceMs": 60000}'Gérer le service Gateway
Section intitulée « Gérer le service Gateway »openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallInstaller avec un wrapper
Section intitulée « Installer avec un wrapper »Utilisez --wrapper lorsque le service géré doit démarrer via un autre exécutable, par exemple un
intergiciel (shim) de gestionnaire de secrets ou une aide d’exécution. Le wrapper reçoit les arguments normaux du Gateway et est
responsable d’exécuter finalement openclaw ou Node avec ces arguments.
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler
openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restartVous pouvez également définir le wrapper via l’environnement. gateway install vérifie que le chemin est
un fichier exécutable, écrit le wrapper dans le service ProgramArguments, et rend persistant
OPENCLAW_WRAPPER dans l’environnement du service pour les réinstallations forcées ultérieures, les mises à jour et les réparations
doctor.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctorPour supprimer un wrapper persistant, effacez OPENCLAW_WRAPPER lors de la réinstallation :
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restartOptions de commande
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port, `—runtime
, —token, —wrapper
, —force, —json -gateway restart:—safe, —skip-deferral, —force, —wait
, —json -gateway uninstall|start:—json -gateway stop:—disable, —json`
Comportement du cycle de vie
- Utilisez
gateway restartpour redémarrer un service géré. N’enchaînez pasgateway stopetgateway startcomme substitut de redémarrage. - Sur macOS,
gateway stoputiliselaunchctl bootoutpar défaut, ce qui supprime le LaunchAgent de la session de démarrage actuelle sans rendre la désactivation persistante — La récupération automatique KeepAlive reste active pour les futurs plantages etgateway startréactive proprement sanslaunchctl enablemanuel. Passez--disablepour supprimer de manière persistante KeepAlive et RunAtLoad afin que la passerelle ne redémarre pas jusqu’au prochaingateway startexplicite ; utilisez ceci lorsqu’un arrêt manuel doit survivre aux redémarrages ou aux redémarrages système. gateway restart --safedemande au Gateway en cours d’exécution d’effectuer une vérification préliminaire du travail actif OpenClaw et de reporter le redémarrage jusqu’à la livraison des réponses, aux exécutions intégrées et à la vidange des exécutions de tâches.--safene peut pas être combiné avec--forceou--wait.gateway restart --wait 30sremplace le budget de vidange de redémarrage configuré pour ce redémarrage. Les nombres nus sont en millisecondes ; des unités telles ques,methsont acceptées.--wait 0attend indéfiniment.gateway restart --safe --skip-deferralexécute le redémarrage sécurisé conscient OpenClaw mais contourne la porte de report afin que le Gateway émette le redémarrage immédiatement même lorsque des bloqueurs sont signalés. Échappatoire pour l’opérateur pour les reports d’exécution de tâches bloquées ; nécessite--safe.gateway restart --forceignore la vidange du travail actif et redémarre immédiatement. Utilisez-le lorsqu’un opérateur a déjà inspecté les bloqueurs de tâches répertoriés et souhaite récupérer la passerne maintenant.- Les commandes de cycle de vie acceptent
--jsonpour les scripts.
Authentification et SecretRefs lors de l'installation
- Lorsque l’authentification 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’authentification par jeton nécessite un jeton et que le SecretRef du jeton configuré est non résolu, l’installation échoue de manière fermée au lieu de persister du texte brut de repli.
- Pour l’authentification par mot de passe sur
gateway run, privilégiezOPENCLAW_GATEWAY_PASSWORD,--password-fileou ungateway.auth.passwordpris en charge par SecretRef plutôt que--passworden ligne. - En mode d’authentification déduit,
OPENCLAW_GATEWAY_PASSWORDshell uniquement ne relâche pas les exigences du jeton d’installation ; utilisez une configuration 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.
Découvrir les passerelles (Bonjour)
Section intitulée « Découvrir les passerelles (Bonjour) »gateway discover recherche les balises Gateway (_openclaw-gw._tcp).
- DNS-SD multidiffusion :
local. - DNS-SD monodiffusion (Bonjour grande portée) : choisissez un domaine (exemple :
openclaw.internal.) et configurez le DNS fractionné + un serveur DNS ; voir Bonjour.
Seules les passerelles avec la découverte Bonjour activée (par défaut) annoncent la balise.
Les enregistrements de découverte grande portée peuvent inclure ces indices TXT :
role(indice de rôle de passerelle)transport(indice de transport, par ex.gateway)gatewayPort(port WebSocket, généralement18789)sshPort(mode de découverte complet uniquement ; les clients définissent par défaut les cibles SSH sur22lorsqu’il est absent)tailnetDns(nom d’hôte MagicDNS, si disponible)gatewayTls/gatewayTlsSha256(TLS activé + empreinte du certificat)cliPath(mode de découverte complète uniquement)
gateway discover
Section intitulée « gateway discover »openclaw gateway discoverExemples :
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'