Gateway protokolü (WebSocket)
Gateway (Ağ Geçidi) WS protokolü, OpenClaw için tek kontrol düzlemi + düğüm taşımasıdır. Tüm istemciler (CLI, web UI, macOS uygulaması, iOS/Android düğümleri, başsız düğümler) WebSocket üzerinden bağlanır ve el sıkışma sırasında rol + kapsam bildirir.Taşıma
- WebSocket, JSON yükleri içeren metin çerçeveleri.
- İlk çerçeve mutlaka bir
connectisteği olmalıdır.
El sıkışma (bağlanma)
Gateway → İstemci (bağlantı öncesi meydan okuma):hello-ok ayrıca şunları içerir:
Düğüm örneği
Çerçeveleme
- İstek:
{type:"req", id, method, params} - Yanıt:
{type:"res", id, ok, payload|error} - Olay:
{type:"event", event, payload, seq?, stateVersion?}
Roller + kapsamlar
Roller
operator= kontrol düzlemi istemcisi (CLI/UI/otomasyon).node= yetenek ana makinesi (kamera/ekran/tuval/system.run).
Kapsamlar (operatör)
Yaygın kapsamlar:operator.readoperator.writeoperator.adminoperator.approvalsoperator.pairing
Yetenekler/komutlar/izinler (düğüm)
Düğümler, bağlantı sırasında yetenek taleplerini bildirir:caps: üst düzey yetenek kategorileri.commands: çağırma için komut izin listesi.permissions: ayrıntılı anahtarlar (örn.screen.record,camera.capture).
Presence
system-presence, cihaz kimliğine göre anahtarlanmış girdiler döndürür.- Varlık girdileri
deviceId,rolesvescopesiçerir; böylece UI’lar, hem operatör hem de düğüm olarak bağlansa bile cihaz başına tek bir satır gösterebilir.
Düğüm yardımcı yöntemleri
- Düğümler, otomatik izin kontrolleri için mevcut skill yürütülebilirlerinin
listesini almak üzere
skills.binsçağrısını yapabilir.
Exec onayları
- Bir çalıştırma isteği onay gerektirdiğinde, gateway
exec.approval.requestedyayınlar. - Operatör istemciler,
operator.approvalskapsamını gerektirenexec.approval.resolveçağrısı ile çözer.
Versioning
PROTOCOL_VERSION,src/gateway/protocol/schema.tsiçinde bulunur.- İstemciler
minProtocol+maxProtocolgönderir; sunucu uyuşmazlıkları reddeder. - Şemalar + modeller TypeBox tanımlarından üretilir:
pnpm protocol:genpnpm protocol:gen:swiftpnpm protocol:check
Kimlik doğrulama
OPENCLAW_GATEWAY_TOKEN(veya--token) ayarlanmışsa,connect.params.auth.tokeneşleşmelidir; aksi halde soket kapatılır.- Eşleştirmeden sonra Gateway (Ağ Geçidi), bağlantı rolü + kapsamlarına göre
kapsamlandırılmış bir cihaz belirteci verir. Bu,
hello-ok.auth.deviceTokeniçinde döndürülür ve gelecekteki bağlantılar için istemci tarafından kalıcı olarak saklanmalıdır. - Cihaz belirteçleri
device.token.rotatevedevice.token.revokeüzerinden döndürülebilir/iptal edilebilir (operator.pairingkapsamı gerektirir).
Cihaz kimliği + eşleştirme
- Düğümler, anahtar çifti parmak izinden türetilmiş kararlı bir cihaz kimliği
(
device.id) eklemelidir. - Gateway (Ağ Geçitleri), cihaz + rol başına belirteçler verir.
- Yerel otomatik onay etkin değilse, yeni cihaz kimlikleri için eşleştirme onayları gereklidir.
- Yerel bağlantılar loopback ve gateway ana makinesinin kendi tailnet adresini içerir (böylece aynı ana makinedeki tailnet bağları yine de otomatik onaylanabilir).
- Tüm WS istemcileri,
connectsırasındadevicekimliğini (operatör + düğüm) içermelidir. Kontrol UI’ı, yalnızcagateway.controlUi.allowInsecureAuthetkin olduğunda (veya acil durum kullanımı içingateway.controlUi.dangerouslyDisableDeviceAuth) bunu atlayabilir. - Yerel olmayan bağlantılar, sunucu tarafından sağlanan
connect.challengenonce’unu imzalamalıdır.
TLS + sabitleme
- WS bağlantıları için TLS desteklenir.
- İstemciler, isteğe bağlı olarak gateway sertifika parmak izini sabitleyebilir
(
gateway.tlsyapılandırması ile birliktegateway.remote.tlsFingerprintveya CLI--tls-fingerprint’ye bakın).
Kapsam
Bu protokol tam gateway API’sini (durum, kanallar, modeller, sohbet, ajan, oturumlar, düğümler, onaylar vb.) açığa çıkarır. Kesin yüzey,src/gateway/protocol/schema.ts içindeki TypeBox şemaları tarafından tanımlanır.