Platforms overview
Android uygulaması
Destek anlık görüntüsü
- Rol: eşlikçi node uygulaması (Android, Gateway barındırmaz).
- Gateway gerekli: evet (macOS, Linux veya WSL2 üzerinden Windows'ta çalıştırın).
- Kurulum: Başlarken + Eşleştirme.
- Gateway: Çalıştırma kılavuzu + Yapılandırma.
- Protokoller: Gateway protokolü (node'lar + kontrol düzlemi).
Sistem denetimi
Sistem denetimi (launchd/systemd), Gateway ana makinesinde bulunur. Gateway bölümüne bakın.
Bağlantı çalıştırma kılavuzu
Android node uygulaması ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android, doğrudan Gateway WebSocket'ine bağlanır ve cihaz eşleştirmesini (role: node) kullanır.
Tailscale veya herkese açık ana makineler için Android güvenli bir uç nokta gerektirir:
- Tercih edilen:
https://<magicdns>/wss://<magicdns>ile Tailscale Serve / Funnel - Ayrıca desteklenir: gerçek bir TLS uç noktasına sahip başka herhangi bir
wss://Gateway URL'si - Düz metin
ws://, özel LAN adreslerinde /.localana makinelerinde, ayrıcalocalhost,127.0.0.1ve Android emülatör köprüsünde (10.0.2.2) desteklenmeye devam eder
Ön koşullar
- Gateway'i "master" makinede çalıştırabilirsiniz.
- Android cihaz/emülatör gateway WebSocket'ine erişebilir:
- mDNS/NSD ile aynı LAN, veya
- Wide-Area Bonjour / unicast DNS-SD kullanarak aynı Tailscale tailnet'i (aşağıya bakın), veya
- Manuel gateway ana makinesi/bağlantı noktası (yedek)
- Tailnet/herkese açık mobil eşleştirme, ham tailnet IP
ws://uç noktaları kullanmaz. Bunun yerine Tailscale Serve veya başka birwss://URL'si kullanın. - CLI'yi (
openclaw) gateway makinesinde (veya SSH üzerinden) çalıştırabilirsiniz.
1) Gateway'i başlatın
openclaw gateway --port 18789 --verbose
Günlüklerde şuna benzer bir şey gördüğünüzü doğrulayın:
listening on ws://0.0.0.0:18789
Tailscale üzerinden uzaktan Android erişimi için ham tailnet bağlaması yerine Serve/Funnel tercih edin:
openclaw gateway --tailscale serve
Bu, Android'e güvenli bir wss:// / https:// uç noktası sağlar. Düz bir gateway.bind: "tailnet" kurulumu, TLS'i ayrıca sonlandırmadığınız sürece ilk kez uzaktan Android eşleştirmesi için yeterli değildir.
2) Keşfi doğrulayın (isteğe bağlı)
Gateway makinesinden:
dns-sd -B _openclaw-gw._tcp local.
Daha fazla hata ayıklama notu: Bonjour.
Ayrıca bir geniş alan keşif alan adı yapılandırdıysanız şununla karşılaştırın:
openclaw gateway discover --json
Bu, tek geçişte local. ile yapılandırılmış geniş alan alan adını gösterir ve yalnızca TXT ipuçları yerine çözümlenen hizmet uç noktasını kullanır.
Unicast DNS-SD üzerinden Tailnet (Viyana ⇄ Londra) keşfi
Android NSD/mDNS keşfi ağlar arasında geçiş yapmaz. Android node'unuz ve gateway farklı ağlardaysa ancak Tailscale ile bağlıysa bunun yerine Wide-Area Bonjour / unicast DNS-SD kullanın.
Keşif tek başına tailnet/herkese açık Android eşleştirmesi için yeterli değildir. Keşfedilen rota yine de güvenli bir uç nokta (wss:// veya Tailscale Serve) gerektirir:
- Gateway ana makinesinde bir DNS-SD bölgesi (örnek
openclaw.internal.) kurun ve_openclaw-gw._tcpkayıtlarını yayımlayın. - Seçtiğiniz alan adı için, bu DNS sunucusunu işaret eden Tailscale split DNS yapılandırın.
Ayrıntılar ve örnek CoreDNS yapılandırması: Bonjour.
3) Android'den bağlanın
Android uygulamasında:
- Uygulama, gateway bağlantısını bir ön plan hizmeti (kalıcı bildirim) aracılığıyla canlı tutar.
- Connect sekmesini açın.
- Setup Code veya Manual modunu kullanın.
- Keşif engellenirse Advanced controls içinde manuel ana makine/bağlantı noktası kullanın. Özel LAN ana makineleri için
ws://çalışmaya devam eder. Tailscale/herkese açık ana makineler için TLS'i açın ve birwss:/// Tailscale Serve uç noktası kullanın.
İlk başarılı eşleştirmeden sonra Android başlangıçta otomatik yeniden bağlanır:
- Manuel uç nokta (etkinse), aksi halde
- Son keşfedilen gateway (en iyi çaba).
Presence alive işaretleri
Kimliği doğrulanmış node oturumu bağlandıktan sonra ve uygulama, ön plan hizmeti hâlâ bağlıyken arka plana geçtiğinde Android, event: "node.presence.alive" ile node.event çağırır. Gateway bunu, yalnızca kimliği doğrulanmış node cihaz kimliği bilindikten sonra eşleştirilmiş node/cihaz meta verilerinde lastSeenAtMs/lastSeenReason olarak kaydeder.
Uygulama, işaretin başarıyla kaydedildiğini yalnızca gateway yanıtında handled: true bulunduğunda sayar. Eski gateway'ler node.event çağrısını { "ok": true } ile onaylayabilir; bu yanıt uyumludur ancak kalıcı bir son görülme güncellemesi olarak sayılmaz.
4) Eşleştirmeyi onaylayın (CLI)
Gateway makinesinde:
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
Eşleştirme ayrıntıları: Eşleştirme.
İsteğe bağlı: Android node her zaman sıkı biçimde denetlenen bir alt ağdan bağlanıyorsa açık CIDR'ler veya tam IP'ler ile ilk kez node otomatik onayına katılabilirsiniz:
{
gateway: {
nodes: {
pairing: {
autoApproveCidrs: ["192.168.1.0/24"],
},
},
},
}
Bu varsayılan olarak devre dışıdır. Yalnızca istenen kapsamı olmayan yeni role: node eşleştirmesi için geçerlidir. Operatör/tarayıcı eşleştirmesi ve herhangi bir rol, kapsam, meta veri veya açık anahtar değişikliği yine manuel onay gerektirir.
5) Node'un bağlı olduğunu doğrulayın
-
Node durumu üzerinden:
openclaw nodes status -
Gateway üzerinden:
openclaw gateway call node.list --params "{}"
6) Sohbet + geçmiş
Android Chat sekmesi oturum seçimini destekler (varsayılan main ve diğer mevcut oturumlar):
- Geçmiş:
chat.history(görüntü-normalize edilmiş; satır içi yönerge etiketleri görünür metinden çıkarılır, düz metin tool-call XML yükleri (<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>ve kesilmiş tool-call blokları dahil) ve sızan ASCII/tam genişlikli model denetim token'ları çıkarılır, tamNO_REPLY/no_replygibi saf sessiz-token assistant satırları atlanır ve aşırı büyük satırlar yer tutucularla değiştirilebilir) - Gönder:
chat.send - Anlık güncellemeler (en iyi çaba):
chat.subscribe→event:"chat"
7) Canvas + kamera
Gateway Canvas Host (web içeriği için önerilir)
Node'un aracının diskte düzenleyebileceği gerçek HTML/CSS/JS göstermesini istiyorsanız node'u Gateway canvas host'una yönlendirin.
-
Gateway ana makinesinde
~/.openclaw/workspace/canvas/index.htmloluşturun. -
Node'u buna yönlendirin (LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'
Tailnet (isteğe bağlı): Her iki cihaz da Tailscale üzerindeyse .local yerine bir MagicDNS adı veya tailnet IP kullanın; ör. http://<gateway-magicdns>:18789/__openclaw__/canvas/.
Bu sunucu HTML'ye canlı yeniden yükleme istemcisi enjekte eder ve dosya değişikliklerinde yeniden yükler.
A2UI host'u http://<gateway-host>:18789/__openclaw__/a2ui/ adresinde bulunur.
Canvas komutları (yalnızca ön planda):
canvas.eval,canvas.snapshot,canvas.navigate(varsayılan iskelete dönmek için{"url":""}veya{"url":"/"}kullanın).canvas.snapshot,{ format, base64 }döndürür (varsayılanformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLeski takma adı)
Kamera komutları (yalnızca ön planda; izin denetimli):
camera.snap(jpg)camera.clip(mp4)
Parametreler ve CLI yardımcıları için Kamera node'u bölümüne bakın.
8) Ses + genişletilmiş Android komut yüzeyi
- Voice sekmesi: Android'in iki açık yakalama modu vardır. Mic, her duraklamayı bir sohbet turu olarak gönderen ve uygulama ön plandan çıktığında veya kullanıcı Voice sekmesinden ayrıldığında duran manuel bir Voice sekmesi oturumudur. Talk, sürekli Talk Mode'dur ve kapatılana veya node bağlantısı kesilene kadar dinlemeyi sürdürür.
- Talk Mode, yakalama başlamadan önce mevcut ön plan hizmetini
dataSyncdeğerindendataSync|microphonedeğerine yükseltir, ardından Talk Mode durduğunda geri düşürür. Android 14+FOREGROUND_SERVICE_MICROPHONEbildirimini,RECORD_AUDIOçalışma zamanı iznini ve çalışma zamanında mikrofon hizmet türünü gerektirir. - Sesli yanıtlar, yapılandırılmış gateway Talk sağlayıcısı üzerinden
talk.speakkullanır. Yerel sistem TTS'i yalnızcatalk.speakkullanılamadığında kullanılır. - Voice wake, Android UX/çalışma zamanında devre dışı kalır.
- Ek Android komut aileleri (kullanılabilirlik cihaz + izinlere bağlıdır):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actions(aşağıdaki Bildirim yönlendirme bölümüne bakın)photos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
Assistant giriş noktaları
Android, sistem assistant tetikleyicisinden (Google Assistant) OpenClaw başlatmayı destekler. Yapılandırıldığında ana ekran düğmesini basılı tutmak veya "Hey Google, ask OpenClaw..." demek uygulamayı açar ve istemi sohbet düzenleyicisine aktarır.
Bu, uygulama manifestinde bildirilen Android App Actions meta verilerini kullanır. Gateway tarafında ek yapılandırma gerekmez; assistant intent tamamen Android uygulaması tarafından işlenir ve normal bir sohbet iletisi olarak iletilir.
Bildirim yönlendirme
Android, cihaz bildirimlerini gateway'e olaylar olarak yönlendirebilir. Hangi bildirimlerin ne zaman yönlendirileceğini kapsamlandırmanızı sağlayan çeşitli denetimler vardır.
| Anahtar | Tür | Açıklama |
|---|---|---|
notifications.allowPackages |
string[] | Yalnızca bu paket adlarından gelen bildirimleri yönlendir. Ayarlanırsa diğer tüm paketler yok sayılır. |
notifications.denyPackages |
string[] | Bu paket adlarından gelen bildirimleri asla yönlendirme. allowPackages sonrasında uygulanır. |
notifications.quietHours.start |
string (HH:mm) | Sessiz saatler penceresinin başlangıcı (yerel cihaz saati). Bu pencere sırasında bildirimler bastırılır. |
notifications.quietHours.end |
string (HH:mm) | Sessiz saatler penceresinin sonu. |
notifications.rateLimit |
number | Paket başına dakikada yönlendirilen en fazla bildirim sayısı. Fazla bildirimler bırakılır. |
Bildirim seçici, yönlendirilen bildirim olayları için daha güvenli davranış da kullanır ve hassas sistem bildirimlerinin yanlışlıkla yönlendirilmesini önler.
Örnek yapılandırma:
{
notifications: {
allowPackages: ["com.slack", "com.whatsapp"],
denyPackages: ["com.android.systemui"],
quietHours: {
start: "22:00",
end: "07:00",
},
rateLimit: 5,
},
}