OpenClaw macOS Yardımcı Uygulaması (menü çubuğu + gateway broker)¶
macOS uygulaması, OpenClaw için menü çubuğu yardımcı uygulamasıdır. İzinlerin sahipliğini üstlenir, Gateway’e yerel olarak (launchd veya manuel) bağlanır/yönetir ve macOS yeteneklerini bir düğüm olarak ajana sunar.
Ne yapar¶
- Menü çubuğunda yerel bildirimleri ve durumu gösterir.
- TCC istemlerinin (Bildirimler, Erişilebilirlik, Ekran Kaydı, Mikrofon, Konuşma Tanıma, Otomasyon/AppleScript) sahipliğini üstlenir.
- Gateway’i çalıştırır veya ona bağlanır (yerel veya uzak).
- macOS’e özgü araçları açığa çıkarır (Canvas, Kamera, Ekran Kaydı,
system.run). - Yerel düğüm ana makinesi hizmetini remote modda (launchd) başlatır ve local modda durdurur.
- İsteğe bağlı olarak UI otomasyonu için PeekabooBridge barındırır.
- İstek üzerine npm/pnpm aracılığıyla global CLI’yi (
openclaw) kurar (Gateway çalışma zamanı için bun önerilmez).
Yerel vs uzak mod¶
- Local (varsayılan): uygulama, mevcutsa çalışan yerel bir Gateway’e bağlanır;
aksi halde launchd hizmetini
openclaw gateway installüzerinden etkinleştirir. - Remote: uygulama, SSH/Tailscale üzerinden bir Gateway’e bağlanır ve asla yerel bir süreç başlatmaz. Uzak Gateway’in bu Mac’e erişebilmesi için yerel düğüm ana makinesi hizmetini başlatır. Uygulama, Gateway’i alt süreç olarak başlatmaz.
Launchd denetimi¶
Uygulama, kullanıcı başına bir LaunchAgent’i bot.molt.gateway etiketiyle yönetir
(--profile/OPENCLAW_PROFILE kullanıldığında bot.molt.<profile>;
eski com.openclaw.* hâlâ unload eder).
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway
Adlandırılmış bir profil çalıştırırken etiketi bot.molt.<profile> ile değiştirin.
LaunchAgent yüklü değilse, uygulamadan etkinleştirin veya
openclaw gateway install komutunu çalıştırın.
Düğüm yetenekleri (mac)¶
macOS uygulaması kendisini bir düğüm olarak sunar. Yaygın komutlar:
- Canvas:
canvas.present,canvas.navigate,canvas.eval,canvas.snapshot,canvas.a2ui.* - Kamera:
camera.snap,camera.clip - Ekran:
screen.record - Sistem:
system.run,system.notify
Düğüm, ajanların neye izin verildiğine karar verebilmesi için bir permissions haritası raporlar.
Düğüm hizmeti + uygulama IPC:
- Başsız düğüm ana makinesi hizmeti çalıştığında (remote mod), Gateway WS’ye bir düğüm olarak bağlanır.
system.run, macOS uygulamasında (UI/TCC bağlamı) yerel bir Unix soketi üzerinden çalışır; istemler ve çıktı uygulama içinde kalır.
Diyagram (SCI):
Gateway -> Node Service (WS)
| IPC (UDS + token + HMAC + TTL)
v
Mac App (UI + TCC + system.run)
Exec onayları (system.run)¶
system.run, macOS uygulamasındaki Exec onayları (Ayarlar → Exec onayları) tarafından denetlenir.
Güvenlik + sorma + izin listesi Mac üzerinde yerel olarak şurada saklanır:
~/.openclaw/exec-approvals.json
Örnek:
{
"version": 1,
"defaults": {
"security": "deny",
"ask": "on-miss"
},
"agents": {
"main": {
"security": "allowlist",
"ask": "on-miss",
"allowlist": [{ "pattern": "/opt/homebrew/bin/rg" }]
}
}
}
Notlar:
allowlistgirdileri, çözümlenmiş ikili dosya yolları için glob desenleridir.- İstemde “Her Zaman İzin Ver” seçilmesi, bu komutu izin listesine ekler.
system.runortam geçersiz kılmaları filtrelenir (PATH,DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPTbırakılır) ve ardından uygulamanın ortamıyla birleştirilir.
Derin bağlantılar¶
Uygulama, yerel eylemler için openclaw:// URL şemasını kaydeder.
openclaw://agent¶
Bir Gateway agent isteğini tetikler.
open 'openclaw://agent?message=Hello%20from%20deep%20link'
Sorgu parametreleri:
message(gerekli)sessionKey(isteğe bağlı)thinking(isteğe bağlı)deliver/to/channel(isteğe bağlı)timeoutSeconds(isteğe bağlı)key(isteğe bağlı, gözetimsiz mod anahtarı)
Güvenlik:
keyolmadan, uygulama onay ister.- Geçerli bir
keyile çalıştırma gözetimsizdir (kişisel otomasyonlar için tasarlanmıştır).
Onboarding akışı (tipik)¶
- OpenClaw.app’i kurun ve başlatın.
- İzinler kontrol listesini tamamlayın (TCC istemleri).
- Local modun etkin olduğundan ve Gateway’in çalıştığından emin olun.
- Terminal erişimi istiyorsanız CLI’yi kurun.
Build & geliştirme iş akışı (yerel)¶
cd apps/macos && swift buildswift run OpenClaw(veya Xcode)- Uygulamayı paketleme:
scripts/package-mac-app.sh
Gateway bağlantısını hata ayıklama (macOS CLI)¶
Uygulamayı başlatmadan, macOS uygulamasının kullandığı Gateway WebSocket el sıkışması ve keşif mantığının aynısını denemek için debug CLI’yi kullanın.
cd apps/macos
swift run openclaw-mac connect --json
swift run openclaw-mac discover --timeout 3000 --json
Bağlantı seçenekleri:
--url <ws://host:port>: yapılandırmayı geçersiz kıl--mode <local|remote>: yapılandırmadan çözümle (varsayılan: yapılandırma veya yerel)--probe: yeni bir sağlık yoklaması zorla--timeout <ms>: istek zaman aşımı (varsayılan:15000)--json: karşılaştırma için yapılandırılmış çıktı
Keşif seçenekleri:
--include-local: “yerel” olarak filtrelenecek gateway’leri dahil et--timeout <ms>: genel keşif penceresi (varsayılan:2000)--json: karşılaştırma için yapılandırılmış çıktı
İpucu: openclaw gateway discover --json ile karşılaştırarak,
macOS uygulamasının keşif hattının (NWBrowser + tailnet DNS‑SD geri dönüşü) Node CLI’nin
dns-sd tabanlı keşfinden farklı olup olmadığını görün.
Uzak bağlantı tesisatı (SSH tünelleri)¶
macOS uygulaması Remote modda çalıştığında, yerel UI bileşenlerinin uzak bir Gateway ile sanki localhost’taymış gibi konuşabilmesi için bir SSH tüneli açar.
Denetim tüneli (Gateway WebSocket portu)¶
- Amaç: sağlık kontrolleri, durum, Web Chat, yapılandırma ve diğer kontrol düzlemi çağrıları.
- Yerel port: Gateway portu (varsayılan
18789), her zaman sabit. - Uzak port: uzak ana makinedeki aynı Gateway portu.
- Davranış: rastgele yerel port yoktur; uygulama mevcut sağlıklı bir tüneli yeniden kullanır veya gerekirse yeniden başlatır.
- SSH şekli: BatchMode +
ExitOnForwardFailure + keepalive seçenekleriyle
ssh -N -L <local>:127.0.0.1:<remote>. - IP raporlama: SSH tüneli loopback kullanır, bu nedenle gateway düğüm IP’sini
127.0.0.1olarak görür. Gerçek istemci IP’sinin görünmesini istiyorsanız Direct (ws/wss) taşımasını kullanın (bkz. macOS remote access).
Kurulum adımları için macOS remote access bölümüne bakın. Protokol ayrıntıları için Gateway protocol bölümüne bakın.