Protocole de pont (transport de nœud hérité)
Le protocole de pont est un transport de nœud hérité (TCP JSONL). Les nouveaux clients nœuds doivent utiliser à la place le protocole WebSocket unifié de la Gateway (passerelle). Si vous développez un opérateur ou un client nœud, utilisez le protocole Gateway. Remarque : Les versions actuelles d’OpenClaw n’intègrent plus l’écouteur TCP du pont ; ce document est conservé à des fins de référence historique. Les clés de configuration héritéesbridge.* ne font plus partie du schéma de configuration.
Pourquoi nous avons les deux
- Frontière de sécurité : le pont expose une petite liste d’autorisations plutôt que l’ensemble de la surface de l’API de la Gateway.
- Appairage + identité du nœud : l’admission des nœuds est gérée par la Gateway et liée à un jeton par nœud.
- UX de découverte : les nœuds peuvent découvrir les passerelles via Bonjour sur le LAN, ou se connecter directement via un tailnet.
- WS en loopback : le plan de contrôle WS complet reste local sauf s’il est tunnelisé via SSH.
Transport
- TCP, un objet JSON par ligne (JSONL).
- TLS optionnel (lorsque
bridge.tls.enabledest vrai). - Le port d’écoute hérité par défaut était
18790(les versions actuelles ne démarrent pas de pont TCP).
bridgeTls=1 plus
bridgeTlsSha256 afin que les nœuds puissent épingler le certificat. Notez que les enregistrements TXT Bonjour/mDNS sont
non authentifiés ; les clients ne doivent pas considérer l’empreinte annoncée comme un
pin faisant autorité sans intention explicite de l’utilisateur ou autre vérification hors bande.
Handshake + appairage
- Le client envoie
helloavec les métadonnées du nœud + le jeton (s’il est déjà appairé). - S’il n’est pas appairé, la Gateway répond
error(NOT_PAIRED/UNAUTHORIZED). - Le client envoie
pair-request. - La Gateway attend l’approbation, puis envoie
pair-okethello-ok.
hello-ok renvoie serverName et peut inclure canvasHostUrl.
Frames
Client → Gateway :req/res: RPC Gateway à portée limitée (chat, sessions, config, health, voicewake, skills.bins)event: signaux du nœud (transcription vocale, requête d’agent, abonnement au chat, cycle de vie exec)
invoke/invoke-res: commandes du nœud (canvas.*,camera.*,screen.record,location.get,sms.send)event: mises à jour de chat pour les sessions abonnéesping/pong: keepalive
src/gateway/server-bridge.ts (supprimé).
Événements du cycle de vie exec
Les nœuds peuvent émettre des événementsexec.finished ou exec.denied pour exposer l’activité system.run.
Ils sont mappés vers des événements système dans la Gateway. (Les nœuds hérités peuvent encore émettre exec.started.)
Champs de charge utile (tous optionnels sauf indication contraire) :
sessionKey(requis) : session d’agent qui reçoit l’événement système.runId: identifiant exec unique pour le regroupement.command: chaîne de commande brute ou formatée.exitCode,timedOut,success,output: détails d’achèvement (terminé uniquement).reason: raison du refus (refusé uniquement).
Utilisation du tailnet
- Lier le pont à une IP de tailnet :
bridge.bind: "tailnet"dans~/.openclaw/openclaw.json. - Les clients se connectent via un nom MagicDNS ou une IP de tailnet.
- Bonjour ne traverse pas les réseaux ; utilisez un hôte/port manuel ou un DNS‑SD étendu si nécessaire.