Düğümler
Bir düğüm, Gateway WebSocket’ine (role: "node" ile, operatörlerle aynı port üzerinden) bağlanan ve node.invoke aracılığıyla bir komut yüzeyi (canvas.*, camera.*, device.*, notifications.*, system.* gibi) sunan yardımcı bir cihazdır (macOS/iOS/Android/headless). Protokol ayrıntıları: Gateway protocol.
Eski taşıma katmanı: Bridge protocol (TCP JSONL;
yalnızca tarihsel amaçlıdır, mevcut düğümler için geçerli değildir).
macOS ayrıca node mode’da da çalışabilir: menü çubuğu uygulaması Gateway’in WS sunucusuna bağlanır ve yerel tuval/kamera komutlarını bir düğüm olarak sunar (böylece openclaw nodes … bu Mac’e karşı çalışır).
Notlar:
- Düğümler çevre birimleridir, gateway değildir. Gateway hizmetini çalıştırmazlar.
- Telegram/WhatsApp/vb. mesajlar düğümlere değil, gateway’e ulaşır.
- Sorun giderme çalışma kılavuzu: /nodes/troubleshooting
Eşleştirme + durum
WS düğümleri cihaz eşleştirmesi kullanır. Düğümlerconnect sırasında bir cihaz kimliği sunar; Gateway, role: node için bir cihaz eşleştirme isteği oluşturur. Bunu cihazlar CLI’ı (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 düğümü paired olarak işaretler.- Cihaz eşleştirme kaydı, kalıcı onaylı rol sözleşmesidir. Belirteç rotasyonu bu sözleşme içinde kalır; eşleştirme onayının hiç vermediği farklı bir role eşleştirilmiş bir düğümü yükseltemez.
node.pair.*(CLI:openclaw nodes pending/approve/reject/rename) ayrı, gateway sahipli bir düğüm eşleştirme deposudur; WSconnectel sıkışmasını engellemez.- Onay kapsamı, bekleyen isteğin bildirilmiş komutlarını izler:
- komutsuz istek:
operator.pairing - exec olmayan düğüm komutları:
operator.pairing+operator.write system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- komutsuz istek:
Uzak düğüm ana bilgisayarı (system.run)
Gateway’iniz bir makinede çalışırken komutların başka bir makinede yürütülmesini istiyorsanız bir node host kullanın. Model hâlâ gateway ile konuşur;host=node seçildiğinde gateway exec çağrılarını node host’a iletir.
Ne nerede çalışır
- Gateway host: mesajları alır, modeli çalıştırır, araç çağrılarını yönlendirir.
- Node host: düğüm makinesinde
system.run/system.whichyürütür. - Onaylar: node host üzerinde
~/.openclaw/exec-approvals.jsonaracılığıyla uygulanır.
- Onay destekli düğüm çalıştırmaları tam istek bağlamına bağlanır.
- Doğrudan kabuk/runtime dosya çalıştırmaları için OpenClaw ayrıca en iyi çabayla tek bir somut yerel dosya işlenenini bağlar ve bu dosya yürütmeden önce değişirse çalıştırmayı reddeder.
- OpenClaw bir yorumlayıcı/runtime komutu için tam olarak tek bir somut yerel dosya belirleyemezse, tam runtime kapsamı varmış gibi yapmak yerine onay destekli yürütme reddedilir. Daha geniş yorumlayıcı semantiği için sandboxing, ayrı ana bilgisayarlar veya açık bir güvenilir allowlist/tam iş akışı kullanın.
Bir node host başlatma (ön planda)
Düğüm makinesinde:SSH tüneli üzerinden uzak gateway (loopback bind)
Gateway loopback’e bağlanıyorsa (gateway.bind=loopback, local mode’da varsayılan),
uzak node host’lar doğrudan bağlanamaz. Bir SSH tüneli oluşturun ve
node host’u tünelin yerel ucuna yönlendirin.
Örnek (node host -> gateway host):
openclaw node run, belirteç veya parola kimlik doğrulamasını destekler.- Ortam değişkenleri tercih edilir:
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Yapılandırma geri dönüşü
gateway.auth.token/gateway.auth.passwordşeklindedir. - local mode’da node host, kasıtlı olarak
gateway.remote.token/gateway.remote.passworddeğerlerini yok sayar. - remote mode’da
gateway.remote.token/gateway.remote.password, uzak öncelik kurallarına göre uygundur. - Etkin yerel
gateway.auth.*SecretRef’leri yapılandırılmış ancak çözümlenmemişse, node-host kimlik doğrulaması kapalı şekilde 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 başlatma (hizmet)
Eşleştirme + adlandırma
Gateway ana bilgisayarında: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(düğümde~/.openclaw/node.jsoniçinde kalıcı olur).openclaw nodes rename --node <id|name|ip> --name "Build Node"(gateway geçersiz kılması).
Komutları allowlist’e ekleme
Exec onayları her node host için ayrıdır. Gateway üzerinden allowlist girdileri ekleyin:~/.openclaw/exec-approvals.json içinde tutulur.
Exec’i düğüme yönlendirme
Varsayılanları yapılandırın (gateway config):host=node ile yapılan tüm exec çağrıları node host üzerinde çalışır (düğüm allowlist/onaylarına tabi olarak).
host=auto, düğümü kendi başına örtük olarak seçmez, ancak açık bir çağrı başına host=node isteğine auto içinden izin verilir. Düğüm exec’in oturum için varsayılan olmasını istiyorsanız, tools.exec.host=node veya /exec host=node ... ayarını açıkça yapın.
İlgili:
Komut çağırma
Düşük seviye (ham RPC):Ekran görüntüleri (tuval anlık görüntüleri)
Düğüm Canvas’ı (WebView) gösteriyorsa,canvas.snapshot { format, base64 } döndürür.
CLI yardımcısı (geçici bir dosyaya yazar ve MEDIA:<path> yazdırır):
Tuval denetimleri
canvas present, URL’leri veya yerel dosya yollarını (--target) ve ayrıca 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)
- Yalnızca A2UI v0.8 JSONL desteklenir (v0.9/createSurface reddedilir).
Fotoğraflar + videolar (düğüm kamerası)
Fotoğraflar (jpg):
mp4):
canvas.*vecamera.*için düğümün foregrounded olması gerekir (arka plan çağrılarıNODE_BACKGROUND_UNAVAILABLEdöndürür).- Büyük base64 yüklerinden kaçınmak için klip süresi sınırlandırılır (şu anda
<= 60s). - Android mümkün olduğunda
CAMERA/RECORD_AUDIOizinlerini ister; 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 fazla ekran olduğunda görüntü seçmek için
--screen <index>kullanın.
Konum (düğümler)
Ayarlar içinde Konum etkinleştirildiğinde düğümlerlocation.get sunar.
CLI yardımcısı:
- Konum varsayılan olarak kapalıdır.
- “Always” sistem izni gerektirir; arka plan getirme en iyi çabayla yapılır.
- Yanıt, enlem/boylam, doğruluk (metre) ve zaman damgasını içerir.
SMS (Android düğümleri)
Kullanıcı SMS iznini verdiğinde ve cihaz telefon görüşmesini desteklediğinde Android düğümlerisms.send sunabilir.
Düşük seviye çağrı:
- Yetenek duyurulmadan önce izin isteminin Android cihazında kabul edilmesi gerekir.
- Telefon özelliği olmayan yalnızca Wi‑Fi cihazlar
sms.sendduyurmaz.
Android cihaz + kişisel veri komutları
Android düğümleri, ilgili yetenekler etkinleştirildiğinde ek komut aileleri duyurabilir. Kullanılabilir aileler:device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
- Hareket komutları, mevcut sensörlere göre yetenek kapılıdır.
Sistem komutları (node host / mac node)
macOS düğümüsystem.run, system.notify ve system.execApprovals.get/set sunar.
Headless node host 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.- Shell yürütmesi artık
host=nodeileexecaracı üzerinden yapılır;nodes, açık düğüm komutları için doğrudan RPC yüzeyi olmaya devam eder. nodes invoke,system.runveyasystem.run.preparesunmaz; bunlar yalnızca exec yolunda kalır.- Exec yolu, onaydan önce standart bir
systemRunPlanhazırlar. Bir onay verildiğinde, gateway sonradan çağıran tarafından düzenlenmiş komut/cwd/oturum alanlarını değil, depolanmış bu planı iletir. system.notify, macOS uygulamasındaki bildirim izin durumuna uyar.- Tanınmayan düğüm
platform/deviceFamilymeta verileri,system.runvesystem.whichkomutlarını hariç tutan ihtiyatlı bir varsayılan allowlist kullanır. Bilinmeyen bir platform için bu komutlara özellikle ihtiyacınız varsa, bunlarıgateway.nodes.allowCommandsaracılığıyla açıkça ekleyin. system.run,--cwd,--env KEY=VAL,--command-timeoutve--needs-screen-recordingdestekler.- Shell sarmalayıcıları için (
bash|sh|zsh ... -c/-lc), istek kapsamındaki--envdeğerleri açık bir allowlist’e düşürülür (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - allowlist mode’daki her zaman izin ver kararlarında, bilinen gönderim sarmalayıcıları (
env,nice,nohup,stdbuf,timeout) sarmalayıcı yolları yerine iç yürütülebilir yolları kalıcı hale getirir. Güvenli şekilde açılması mümkün değilse hiçbir allowlist girdisi otomatik olarak kalıcı hale getirilmez. - allowlist mode’daki Windows node host’larında,
cmd.exe /cüzerinden shell-wrapper çalıştırmaları onay gerektirir (yalnızca allowlist girdisi bu sarmalayıcı biçimine otomatik izin vermez). system.notify,--priority <passive|active|timeSensitive>ve--delivery <system|overlay|auto>destekler.- Node host’lar
PATHgeçersiz kılmalarını yok sayar ve tehlikeli başlangıç/shell anahtarlarını ayıklar (DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4). Ek PATH girdilerine ihtiyacınız varsa,PATHdeğerini--envile geçirmek yerine node host hizmet ortamını yapılandırın (veya araçları standart konumlara yükleyin). - macOS node mode’da
system.run, macOS uygulamasındaki exec onaylarıyla korunur (Ayarlar → Exec approvals). Ask/allowlist/full, headless node host ile aynı şekilde davranır; reddedilen istemlerSYSTEM_RUN_DENIEDdöndürür. - headless node host’ta
system.run, exec onaylarıyla korunur (~/.openclaw/exec-approvals.json).
Exec düğüm bağlama
Birden fazla düğüm mevcut 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 eşlemesi
Düğümler,node.list / node.describe içinde izin adına göre anahtarlanmış (ör. screenRecording, accessibility) ve boole değerler (true = verildi) içeren bir permissions eşlemesi içerebilir.
Headless node host (çapraz platform)
OpenClaw, Gateway WebSocket’ine bağlanan vesystem.run / system.which sunan bir headless node host (UI olmadan) ç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şlatmak için:
- Eşleştirme yine de gereklidir (Gateway bir cihaz eşleştirme istemi gösterecektir).
- Node host, düğüm kimliğini, belirtecini, 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 (Exec approvals bölümüne bakın). - macOS’ta headless node host varsayılan olarak
system.runkomutunu yerel olarak yürütür.system.runkomutunu yardımcı uygulama exec host üzerinden yönlendirmek içinOPENCLAW_NODE_EXEC_HOST=appayarlayın; uygulama host’unu zorunlu kılmak ve kullanılamadığında kapalı şekilde başarısız olmak içinOPENCLAW_NODE_EXEC_FALLBACK=0da ekleyin. - Gateway WS TLS kullanıyorsa
--tls/--tls-fingerprintekleyin.
Mac node mode
- macOS menü çubuğu uygulaması, Gateway WS sunucusuna bir düğüm olarak bağlanır (böylece
openclaw nodes …bu Mac’e karşı çalışır). - remote mode’da uygulama, Gateway portu için bir SSH tüneli açar ve
localhostadresine bağlanır.