Platforms overview
macOS uygulaması
macOS uygulaması, OpenClaw için menü çubuğu eşlikçisidir. İzinlerin sahibidir, Gateway'i yerel olarak yönetir/ona bağlanır (launchd veya manuel) ve macOS yeteneklerini ajana bir node olarak sunar.
Ne yapar
- Menü çubuğunda yerel bildirimleri ve durumu gösterir.
- TCC istemlerinin sahibidir (Bildirimler, Erişilebilirlik, Ekran Kaydı, Mikrofon, Konuşma Tanıma, Otomasyon/AppleScript).
- Gateway'i çalıştırır veya ona bağlanır (yerel ya da uzak).
- Yalnızca macOS'a özgü araçları sunar (Canvas, Kamera, Ekran Kaydı,
system.run). - remote modda (launchd) yerel node ana makine hizmetini başlatır ve local modda durdurur.
- İsteğe bağlı olarak UI otomasyonu için PeekabooBridge barındırır.
- İstek üzerine global CLI'yi (
openclaw) npm, pnpm veya bun üzerinden kurar (uygulama önce npm'i, sonra pnpm'i, sonra bun'ı tercih eder; Node önerilen Gateway runtime'ı olmaya devam eder).
Yerel ve uzak mod
- Local (varsayılan): uygulama, varsa çalışan yerel bir Gateway'e bağlanır;
yoksa
openclaw gateway installile launchd hizmetini etkinleştirir. - Remote: uygulama SSH/Tailscale üzerinden bir Gateway'e bağlanır ve hiçbir zaman yerel bir süreç başlatmaz. Uygulama, uzak Gateway'in bu Mac'e erişebilmesi için yerel node ana makine hizmetini başlatır. Uygulama Gateway'i alt süreç olarak başlatmaz. Gateway keşfi artık ham tailnet IP'leri yerine Tailscale MagicDNS adlarını tercih eder, böylece Mac uygulaması tailnet IP'leri değiştiğinde daha güvenilir şekilde toparlanır.
Launchd denetimi
Uygulama ai.openclaw.gateway etiketli kullanıcı başına bir LaunchAgent yönetir
(--profile/OPENCLAW_PROFILE kullanırken ai.openclaw.<profile>; eski com.openclaw.* yine de unload edilir).
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
launchctl bootout gui/$UID/ai.openclaw.gateway
Adlandırılmış bir profil çalıştırırken etiketi ai.openclaw.<profile> ile değiştirin.
LaunchAgent kurulu değilse uygulamadan etkinleştirin veya
openclaw gateway install çalıştırın.
Node yetenekleri (mac)
macOS uygulaması kendini bir node olarak sunar. Yaygın komutlar:
- Canvas:
canvas.present,canvas.navigate,canvas.eval,canvas.snapshot,canvas.a2ui.* - Kamera:
camera.snap,camera.clip - Ekran:
screen.snapshot,screen.record - Sistem:
system.run,system.notify
Node, ajanların neye izin verildiğine karar verebilmesi için bir permissions eşlemesi bildirir.
Node hizmeti + uygulama IPC'si:
- Başsız node ana makine hizmeti çalışırken (remote mod), Gateway WS'ye bir node olarak bağlanır.
system.run, yerel Unix soketi üzerinden macOS uygulamasında (UI/TCC bağlamı) yürütülür; istemler + çı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ı tarafından denetlenir (Ayarlar → Exec onayları).
Güvenlik + sorma + izin listesi Mac'te 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ümlenen ikili yolları için glob desenleri veya PATH üzerinden çağrılan komutlar için yalın komut adlarıdır.- Kabuk denetimi veya genişletme sözdizimi (
&&,||,;,|,`,$,<,>,(,)) içeren ham kabuk komutu metni izin listesi kaçırması olarak değerlendirilir ve açık onay gerektirir (veya kabuk ikilisinin izin listesine alınmasını). - İstemde "Always Allow" seçildiğinde bu komut izin listesine eklenir.
system.runortam geçersiz kılmaları filtrelenir (PATH,DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4bırakılır) ve ardından uygulamanın ortamıyla birleştirilir.- Kabuk sarmalayıcıları (
bash|sh|zsh ... -c/-lc) için istek kapsamlı ortam geçersiz kılmaları küçük ve açık bir izin listesine indirgenir (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - İzin listesi modundaki her zaman izin ver kararları için bilinen dağıtım sarmalayıcıları (
env,nice,nohup,stdbuf,timeout) sarmalayıcı yolları yerine iç yürütülebilir yolları kalıcı hale getirir. Açma işlemi güvenli değilse otomatik olarak hiçbir izin listesi girdisi kalıcı hale getirilmez.
Derin bağlantılar
Uygulama yerel eylemler için openclaw:// URL şemasını kaydeder.
openclaw://agent
Bir Gateway agent isteğini tetikler.
OC_I18N_900004
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.keyolmadan uygulama, onay istemi için kısa bir mesaj sınırı uygular vedeliver/to/channeldeğerlerini yok sayar.- Geçerli bir
keyile çalışma gözetimsizdir (kişisel otomasyonlar için tasarlanmıştır).
Onboarding akışı (tipik)
- OpenClaw.app'i kurun ve başlatın.
- İzin 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.
Durum dizini yerleşimi (macOS)
OpenClaw durum dizininizi iCloud'a veya bulutla eşitlenen diğer klasörlere koymaktan kaçının. Eşitleme destekli yollar gecikme ekleyebilir ve oturumlar ile kimlik bilgileri için zaman zaman dosya kilidi/eşitleme yarışlarına neden olabilir.
Şunun gibi yerel, eşitlenmeyen bir durum yolunu tercih edin:
OC_I18N_900005
openclaw doctor durumu şuraların altında algılarsa:
~/Library/Mobile Documents/com~apple~CloudDocs/...~/Library/CloudStorage/...
uyarır ve yerel bir yola geri taşımayı önerir.
Build ve geliştirme iş akışı (yerel)
cd apps/macos && swift buildswift run OpenClaw(veya Xcode)- Uygulamayı paketle:
scripts/package-mac-app.sh
Gateway bağlantısını hata ayıklama (macOS CLI)
macOS uygulamasını başlatmadan, uygulamanın kullandığı aynı Gateway WebSocket el sıkışmasını ve keşif mantığını çalıştırmak için debug CLI'yi kullanın. OC_I18N_900006 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 local)--probe: yeni bir sağlık yoklamasını 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: "local" 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ı
Uzak bağlantı tesisatı (SSH tünelleri)
macOS uygulaması Remote modda çalıştığında, yerel UI bileşenlerinin uzak bir Gateway ile localhost'taymış gibi konuşabilmesi için bir SSH tüneli açar.
Denetim tüneli (Gateway WebSocket bağlantı noktası)
- Amaç: sağlık kontrolleri, durum, Web Chat, yapılandırma ve diğer denetim düzlemi çağrıları.
- Yerel bağlantı noktası: Gateway bağlantı noktası (varsayılan
18789), her zaman kararlı. - Uzak bağlantı noktası: uzak ana makinedeki aynı Gateway bağlantı noktası.
- Davranış: rastgele yerel bağlantı noktası 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 yüzden gateway node
IP'sini
127.0.0.1olarak görür. Gerçek istemci IP'sinin görünmesini istiyorsanız Direct (ws/wss) aktarımını kullanın (bkz. macOS uzaktan erişim).
Kurulum adımları için bkz. macOS uzaktan erişim. Protokol ayrıntıları için bkz. Gateway protokolü.