Bridge protocol (legacy node transport)
Neden vardı
- Güvenlik sınırı: bridge, tam gateway API yüzeyi yerine küçük bir izin listesini açığa çıkarır.
- Eşleme + düğüm kimliği: düğüm kabulü gateway tarafından sahiplenilir ve düğüm başına bir belirtece bağlıdır.
- Keşif UX’i: düğümler LAN üzerinde Bonjour ile gateway’leri keşfedebilir veya doğrudan bir tailnet üzerinden bağlanabilir.
- Loopback WS: tam WS kontrol düzlemi, SSH üzerinden tünellenmediği sürece yerel kalır.
Taşıma
- TCP, satır başına bir JSON nesnesi (JSONL).
- İsteğe bağlı TLS (
bridge.tls.enabledtrue olduğunda). - Geçmişte varsayılan dinleyici portu
18790idi (güncel sürümler bir TCP bridge başlatmaz).
bridgeTls=1 ve bridgeTlsSha256 içerir. Bonjour/mDNS TXT kayıtlarının kimliği doğrulanmadığını unutmayın; istemciler, açık kullanıcı niyeti veya başka bir bant dışı doğrulama olmadan ilan edilen parmak izini yetkili bir pin olarak değerlendirmemelidir.
El sıkışma + eşleme
- İstemci, düğüm meta verileri + belirteç ile
hellogönderir (zaten eşlenmişse). - Eşlenmemişse, gateway
error(NOT_PAIRED/UNAUTHORIZED) yanıtı verir. - İstemci
pair-requestgönderir. - Gateway onayı bekler, ardından
pair-okvehello-okgönderir.
hello-ok, serverName döndürürdü ve canvasHostUrl içerebilirdi.
Çerçeveler
İstemci → Gateway:req/res: kapsamlı gateway RPC’si (chat,sessions,config,health,voicewake,skills.bins)event: düğüm sinyalleri (ses transkripti, ajan isteği, sohbet aboneliği, exec yaşam döngüsü)
invoke/invoke-res: düğüm komutları (canvas.*,camera.*,screen.record,location.get,sms.send)event: abone olunan oturumlar için sohbet güncellemeleriping/pong: canlı tutma
src/gateway/server-bridge.ts içinde bulunuyordu (kaldırıldı).
Exec yaşam döngüsü olayları
Düğümler,system.run etkinliğini göstermek için exec.finished veya exec.denied olayları yayabilir.
Bunlar gateway içinde sistem olaylarına eşlenir. (Legacy düğümler hâlâ exec.started yayıyor olabilir.)
Yük alanları (belirtilmedikçe tümü isteğe bağlıdır):
sessionKey(zorunlu): sistem olayını alacak ajan oturumu.runId: gruplama için benzersiz exec kimliği.command: ham veya biçimlendirilmiş komut dizgesi.exitCode,timedOut,success,output: tamamlanma ayrıntıları (yalnızca finished).reason: reddedilme nedeni (yalnızca denied).
Geçmiş tailnet kullanımı
- Bridge’i bir tailnet IP’sine bağlayın:
~/.openclaw/openclaw.jsoniçindebridge.bind: "tailnet"(yalnızca geçmiş içindir;bridge.*artık geçerli değildir). - İstemciler MagicDNS adı veya tailnet IP’si üzerinden bağlanır.
- Bonjour ağlar arasında geçmez; gerektiğinde elle host/port veya geniş alan DNS‑SD kullanın.