role: "node" ile bağlanan ve node.invoke üzerinden bir komut yüzeyi (örn. canvas.*, camera.*, device.*, notifications.*, system.*) sunan yardımcı bir cihazdır (macOS/iOS/Android/headless). Protokol ayrıntıları: Gateway protokolü.
Eski taşıma: Bridge protokolü (TCP JSONL;
geçerli Node’lar için yalnızca tarihsel).
macOS ayrıca Node modunda da çalışabilir: menü çubuğu uygulaması Gateway’in
WS sunucusuna bağlanır ve yerel canvas/camera komutlarını bir Node olarak sunar (böylece
openclaw nodes … bu Mac’e karşı çalışır). Uzak Gateway modunda, tarayıcı
otomasyonu yerel uygulama Node’u tarafından değil, CLI Node host’u (openclaw node run veya
kurulu Node servisi) tarafından yürütülür.
Notlar:
- Node’lar çevre birimleridir, Gateway değildir. Gateway servisini çalıştırmazlar.
- Telegram/WhatsApp/vb. mesajlar Node’lara değil Gateway’e ulaşır.
- Sorun giderme runbook’u: /nodes/troubleshooting
Eşleştirme + durum
WS Node’ları cihaz eşleştirmesi kullanır. Node’larconnect sırasında bir cihaz kimliği sunar; Gateway
role: node için bir cihaz eşleştirme isteği oluşturur. Cihazlar CLI’si (veya UI) üzerinden onaylayın.
Hızlı CLI:
requestId oluşturulur. Onaylamadan önce
openclaw devices list komutunu yeniden çalıştırın.
Notlar:
nodes status, cihaz eşleştirme rolünodeiçerdiğinde bir Node’u eşleştirilmiş olarak işaretler.- Cihaz eşleştirme kaydı, kalıcı onaylı rol sözleşmesidir. Token rotasyonu bu sözleşmenin içinde kalır; eşleştirilmiş bir Node’u eşleştirme onayının hiç vermediği farklı bir role yükseltemez.
node.pair.*(CLI:openclaw nodes pending/approve/reject/remove/rename) ayrı, Gateway sahipli bir Node eşleştirme deposudur; WSconnectel sıkışmasını geçitlemez.openclaw nodes remove --node <id|name|ip>bir Node eşleştirmesini kaldırır. Cihaz destekli bir Node için cihazındevices/paired.jsoniçindekinoderolünü iptal eder ve o cihazın Node rolü oturumlarının bağlantısını keser — karma rollü bir cihaz satırını korur ve yalnızcanoderolünü kaybeder; yalnızca Node olan bir cihaz satırı ise silinir. Ayrıca ayrı Gateway sahipli Node eşleştirme deposundan eşleşen girdileri de temizler.operator.pairing, operatör olmayan Node satırlarını kaldırabilir; karma rollü bir cihazda kendi Node rolünü iptal eden bir cihaz-token çağırıcısının ayrıcaoperator.adminiznine ihtiyacı vardır.- Onay kapsamı, bekleyen isteğin bildirdiği komutları izler:
- komutsuz istek:
operator.pairing - exec olmayan Node komutları:
operator.pairing+operator.write system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- komutsuz istek:
Uzak Node host’u (system.run)
Gateway’iniz bir makinede çalışırken komutların başka bir makinede yürütülmesini istiyorsanız bir Node host’u kullanın. Model yine Gateway ile konuşur; Gatewayhost=node seçildiğinde exec çağrılarını Node host’una iletir.
Nerede ne çalışır
- Gateway host’u: mesajları alır, modeli çalıştırır, tool çağrılarını yönlendirir.
- Node host’u: Node makinesinde
system.run/system.whichyürütür. - Onaylar: Node host’unda
~/.openclaw/exec-approvals.jsonüzerinden zorunlu kılınır.
- Onay destekli Node çalıştırmaları tam istek bağlamına bağlanır.
- Doğrudan shell/runtime dosya yürütmeleri için OpenClaw ayrıca en iyi çabayla tek bir somut yerel dosya operandını bağlar ve bu dosya yürütmeden önce değişirse çalıştırmayı reddeder.
- OpenClaw bir interpreter/runtime komutu için tam olarak bir somut yerel dosyayı tanımlayamazsa, tam runtime kapsamı varmış gibi davranmak yerine onay destekli yürütme reddedilir. Daha geniş interpreter semantikleri için sandboxing, ayrı host’lar veya açıkça güvenilen bir izin listesi/tam workflow kullanın.
Bir Node host’u başlatma (ön planda)
Node makinesinde:SSH tüneli üzerinden uzak Gateway (loopback bind)
Gateway loopback’e bağlanıyorsa (gateway.bind=loopback, yerel modda varsayılan),
uzak Node host’ları doğrudan bağlanamaz. Bir SSH tüneli oluşturun ve
Node host’unu tünelin yerel ucuna yönlendirin.
Örnek (Node host -> Gateway host):
openclaw node run, token veya parola kimlik doğrulamasını destekler.- Ortam değişkenleri tercih edilir:
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Config fallback’i
gateway.auth.token/gateway.auth.passworddeğerleridir. - Yerel modda Node host’u bilerek
gateway.remote.token/gateway.remote.passworddeğerlerini yok sayar. - Uzak modda
gateway.remote.token/gateway.remote.password, uzak öncelik kurallarına göre uygundur. - Etkin yerel
gateway.auth.*SecretRef’leri yapılandırılmış ama çözümlenmemişse, Node-host kimlik doğrulaması kapalı başarısız olur. - Node-host kimlik doğrulama çözümlemesi yalnızca
OPENCLAW_GATEWAY_*ortam değişkenlerini dikkate alır.
Bir Node host’u başlatma (servis)
Eşleştirme + adlandırma
Gateway host’unda:openclaw devices list komutunu yeniden çalıştırın
ve geçerli requestId değerini onaylayın.
Adlandırma seçenekleri:
openclaw node run/openclaw node installüzerinde--display-name(Node üzerinde~/.openclaw/node.jsoniçinde kalıcı olur).openclaw nodes rename --node <id|name|ip> --name "Build Node"(Gateway geçersiz kılması).
Komutları izin listesine ekleme
Exec onayları Node host başınadır. Gateway’den izin listesi girdileri ekleyin:~/.openclaw/exec-approvals.json konumunda bulunur.
Exec’i Node’a yönlendirme
Varsayılanları yapılandırın (Gateway config’i):host=node içeren herhangi bir exec çağrısı Node host’unda çalışır (Node
izin listesine/onaylarına tabidir).
host=auto kendi başına Node’u örtük olarak seçmez, ancak auto içinden açık bir çağrı bazlı host=node isteğine izin verilir. Oturum için Node exec’in varsayılan olmasını istiyorsanız tools.exec.host=node veya /exec host=node ... değerini açıkça ayarlayın.
İlgili:
Yerel model çıkarımı
Bir masaüstü veya sunucu Node’u, o Node üzerinde çalışan bir Ollama sunucusundan sohbet özellikli modelleri sunabilir. Agent’lar, kurulu modelleri keşfetmek ve uzaktan sınırlı bir prompt çalıştırmak için Ollama Plugin’ininnode_inference tool’unu kullanır; Gateway’in
Ollama’ya doğrudan ağ erişimine ihtiyacı yoktur. Kurulum, model filtreleme ve doğrudan doğrulama komutları için
Ollama Node-yerel çıkarımı bölümüne bakın.
Komutları çağırma
Düşük seviye (ham RPC):Komut politikası
Node komutları çağrılmadan önce iki geçitten geçmelidir:- Node, komutu WebSocket
connect.commandslistesinde bildirmelidir. - Gateway’in platform politikası bildirilen komuta izin vermelidir.
canvas.*, camera.list,
location.get ve screen.snapshot gibi güvenli bildirilen komutlara izin verir.
talk capability’sini tanıtan veya talk.* komutları bildiren güvenilir Node’lar,
platform etiketinden bağımsız olarak bildirilen push-to-talk komutlarına (talk.ptt.start, talk.ptt.stop,
talk.ptt.cancel, talk.ptt.once) da varsayılan olarak izin verir.
camera.snap, camera.clip ve screen.record gibi tehlikeli veya gizlilik açısından ağır
komutlar hâlâ gateway.nodes.allowCommands ile açık opt-in gerektirir.
gateway.nodes.denyCommands, varsayılanlara ve ek izin listesi girdilerine karşı her zaman kazanır.
Plugin sahipli Node komutları bir Gateway Node-invoke politikası ekleyebilir. Bu politika
izin listesi denetiminden sonra ve Node’a iletmeden önce çalışır; böylece ham
node.invoke, CLI yardımcıları ve özel agent tool’ları aynı Plugin
izin sınırını paylaşır. Tehlikeli Plugin Node komutları hâlâ açık
gateway.nodes.allowCommands opt-in’i gerektirir.
Bir Node bildirilen komut listesini değiştirdikten sonra eski cihaz eşleştirmesini reddedin
ve yeni isteği onaylayın; böylece Gateway güncellenmiş komut anlık görüntüsünü depolar.
Config (openclaw.json)
Node ile ilgili ayarlar gateway.nodes ve tools.exec altında bulunur:
denyCommands, bir platform varsayılanı veya
allowCommands girdisi aksi halde izin verecek olsa bile komutu kaldırır. Gateway Node eşleştirme ve komut politikası alan ayrıntıları için
Gateway yapılandırma başvurusu
bölümüne bakın.
Agent başına exec Node geçersiz kılması:
Ekran görüntüleri (canvas anlık görüntüleri)
Node Canvas’ı (WebView) gösteriyorsa,canvas.snapshot { format, base64 } döndürür.
CLI yardımcısı (geçici bir dosyaya yazar ve kaydedilen yolu yazdırır):
Canvas kontrolleri
canvas present, URL’leri veya yerel dosya yollarını (--target) ve konumlandırma için isteğe bağlı--x/--y/--width/--heightdeğerlerini kabul eder.canvas eval, satır içi JS (--js) veya konumsal bir argümanı kabul eder.
A2UI (Canvas)
- Mobil düğümler, eylem özellikli işleme için paketlenmiş, uygulamanın sahip olduğu bir A2UI sayfası kullanır.
- Yalnızca A2UI v0.8 JSONL desteklenir (v0.9/createSurface reddedilir).
- iOS ve Android uzak Gateway Canvas sayfalarını işler, ancak A2UI düğme eylemleri yalnızca paketlenmiş, uygulamanın sahip olduğu A2UI sayfasından gönderilir. Gateway üzerinde barındırılan HTTP/HTTPS A2UI sayfaları bu mobil istemcilerde yalnızca işleme amaçlıdır.
Fotoğraflar + videolar (düğüm kamerası)
Fotoğraflar (jpg):
mp4):
- Düğüm,
canvas.*vecamera.*için ön planda olmalıdır (arka plan çağrılarıNODE_BACKGROUND_UNAVAILABLEdöndürür). - Klip süresi, aşırı büyük base64 yüklerinden kaçınmak için sınırlandırılır (şu anda
<= 60s). - Android mümkün olduğunda
CAMERA/RECORD_AUDIOizinleri için istem gösterir; reddedilen izinler*_PERMISSION_REQUIREDile başarısız olur.
Ekran kayıtları (düğümler)
Desteklenen düğümlerscreen.record (mp4) sunar. Örnek:
screen.recordkullanılabilirliği düğüm platformuna bağlıdır.- Ekran kayıtları
<= 60sile sınırlandırılır. --no-audio, desteklenen platformlarda mikrofon yakalamayı devre dışı bırakır.- Birden çok ekran kullanılabilir olduğunda ekran seçmek için
--screen <index>kullanın.
Konum (düğümler)
Düğümler, ayarlarda Konum etkinleştirildiğindelocation.get sunar.
CLI yardımcısı:
- Konum varsayılan olarak kapalıdır.
- “Her zaman” sistem izni gerektirir; arka planda getirme en iyi çabayla yapılır.
- Yanıt enlem/boylam, doğruluk (metre) ve zaman damgası içerir.
SMS (Android düğümleri)
Android düğümleri, kullanıcı SMS izni verdiğinde ve cihaz telefon özelliğini desteklediğindesms.send sunabilir.
Düşük seviyeli çağırma:
- Yeteneğin ilan edilmesinden önce izin istemi Android cihazda kabul edilmelidir.
- Telefon özelliği olmayan yalnızca Wi-Fi cihazları
sms.sendilan etmez.
Android cihaz + kişisel veri komutları
Android düğümleri, karşılık gelen yetenekler etkinleştirildiğinde ek komut aileleri ilan edebilir. Kullanılabilir aileler:device.status,device.info,device.permissions,device.health- Android Ayarları’nda Yüklü Uygulamalar paylaşımı etkinleştirildiğinde
device.apps notifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
device.appsisteğe bağlıdır ve varsayılan olarak başlatıcıda görünen uygulamaları döndürür.- Hareket komutları, kullanılabilir sensörlere göre yetenek kapılıdır.
Sistem komutları (düğüm ana makinesi / Mac düğümü)
macOS düğümüsystem.run, system.notify ve system.execApprovals.get/set sunar.
Başsız düğüm ana makinesi system.run, system.which ve system.execApprovals.get/set sunar.
Örnekler:
system.run, yük içinde stdout/stderr/çıkış kodu döndürür.- Kabuk yürütme artık
host=nodeileexecaracı üzerinden geçer;nodes, açık düğüm komutları için doğrudan RPC yüzeyi olarak kalır. nodes invoke,system.runveyasystem.run.preparesunmaz; bunlar yalnızca exec yolunda kalır.- Exec yolu, onaydan önce kanonik bir
systemRunPlanhazırlar. Bir onay verildiğinde gateway, daha sonra çağıran tarafından düzenlenen command/cwd/session alanlarını değil, saklanan bu planı iletir. system.notify, macOS uygulamasındaki bildirim izin durumuna uyar.- Tanınmayan düğüm
platform/deviceFamilymeta verileri,system.runvesystem.whichöğelerini dışlayan korumacı bir varsayılan izin listesi kullanır. Bilinmeyen bir platform için bu komutlara bilinçli olarak ihtiyacınız varsa, bunlarıgateway.nodes.allowCommandsüzerinden açıkça ekleyin. system.run,--cwd,--env KEY=VAL,--command-timeoutve--needs-screen-recordingdestekler.- Kabuk sarmalayıcıları (
bash|sh|zsh ... -c/-lc) için, istek kapsamlı--envdeğerleri açık bir izin listesine indirgenir (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - İzin listesi modunda her zaman izin ver kararları için bilinen gönderim sarmalayıcıları (
env,flock,nice,nohup,stdbuf,timeout) sarmalayıcı yolları yerine iç yürütülebilir dosya yollarını kalıcı hale getirir. Sarmalamayı açmak güvenli değilse, otomatik olarak hiçbir izin listesi girdisi kalıcı hale getirilmez. - İzin listesi modundaki Windows düğüm ana makinelerinde,
cmd.exe /cüzerinden kabuk sarmalayıcı çalıştırmaları onay gerektirir (izin listesi girdisi tek başına sarmalayıcı biçimini otomatik olarak izinli yapmaz). system.notify,--priority <passive|active|timeSensitive>ve--delivery <system|overlay|auto>destekler.- Düğüm ana makineleri
PATHgeçersiz kılmalarını yok sayar ve tehlikeli başlangıç/kabuk anahtarlarını çıkarır (DYLD_*,LD_*,BASHOPTS,FPATH,KSH_ENV,NODE_OPTIONS,NODE_REDIRECT_WARNINGS,NODE_REPL_EXTERNAL_MODULE,NODE_REPL_HISTORY,NODE_V8_COVERAGE,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4,TCLLIBPATH). Ek PATH girdilerine ihtiyacınız varsa,PATHdeğerini--envüzerinden geçirmek yerine düğüm ana makinesi hizmet ortamını yapılandırın (veya araçları standart konumlara kurun). - macOS düğüm modunda
system.run, macOS uygulamasındaki exec onaylarıyla kapılanır (Ayarlar → Exec onayları). Sor/izin listesi/tam, başsız düğüm ana makinesiyle aynı davranır; reddedilen istemlerSYSTEM_RUN_DENIEDdöndürür. - Başsız düğüm ana makinesinde
system.run, exec onaylarıyla kapılanır (~/.openclaw/exec-approvals.json).
Exec düğüm bağlama
Birden çok düğüm kullanılabilir olduğunda exec’i belirli bir düğüme bağlayabilirsiniz. Bu,exec host=node için varsayılan düğümü ayarlar (ve ajan başına geçersiz kılınabilir).
Genel varsayılan:
İzinler haritası
Düğümler,node.list / node.describe içinde izin adına göre anahtarlanan (ör. screenRecording, accessibility) ve boolean değerler içeren (true = verildi) bir permissions haritası içerebilir.
Başsız düğüm ana makinesi (platformlar arası)
OpenClaw, Gateway WebSocket’e bağlanan vesystem.run / system.which sunan başsız düğüm ana makinesi (UI yok) çalıştırabilir. Bu, Linux/Windows üzerinde
veya bir sunucunun yanında minimal bir düğüm çalıştırmak için kullanışlıdır.
Başlatın:
- Eşleştirme yine de gereklidir (Gateway bir cihaz eşleştirme istemi gösterir).
- Düğüm ana makinesi düğüm kimliğini, token’ını, görünen adını ve gateway bağlantı bilgilerini
~/.openclaw/node.jsoniçinde saklar. - Exec onayları yerel olarak
~/.openclaw/exec-approvals.jsonüzerinden uygulanır (bkz. Exec onayları). - macOS üzerinde başsız düğüm ana makinesi varsayılan olarak
system.runöğesini yerel olarak yürütür.system.runöğesini eşlikçi uygulama exec ana makinesi üzerinden yönlendirmek içinOPENCLAW_NODE_EXEC_HOST=appayarlayın; uygulama ana makinesini zorunlu kılmak ve kullanılamıyorsa kapalı başarısız olmak içinOPENCLAW_NODE_EXEC_FALLBACK=0ekleyin. - Gateway WS TLS kullanıyorsa
--tls/--tls-fingerprintekleyin.
Mac düğüm modu
- macOS menü çubuğu uygulaması Gateway WS sunucusuna düğüm olarak bağlanır (böylece
openclaw nodes …bu Mac’e karşı çalışır). - Uzak modda uygulama Gateway bağlantı noktası için bir SSH tüneli açar ve
localhostöğesine bağlanır.