Wat het doet
- Maakt verbinding met een Gateway via WebSocket (LAN of tailnet).
- Biedt node-mogelijkheden: Canvas, schermsnapshot, camera-opname, locatie, praatmodus, spraakwekfunctie.
- Ontvangt
node.invoke-opdrachten en rapporteert nodestatusevents.
Vereisten
- Gateway die op een ander apparaat draait (macOS, Linux of Windows via WSL2).
- Netwerkpad:
- Zelfde LAN via Bonjour, of
- Tailnet via unicast DNS-SD (voorbeelddomein:
openclaw.internal.), of - Handmatige host/poort (fallback).
Snel starten (koppelen + verbinden)
- Start een geauthenticeerde Gateway met een route die je telefoon kan bereiken. Tailscale Serve is het aanbevolen externe pad:
gateway.bind: "lan".
De standaard loopback-bind is niet bereikbaar vanaf een telefoon. Als de
Gateway nog niet is geconfigureerd, voer dan eerst openclaw onboard uit zodat het aanmaken van de setup-code
een token- of wachtwoordauthenticatiepad heeft.
- Open de Control UI, selecteer Nodes en klik op Mobiel apparaat koppelen in de kaart Apparaten.
- Open in de iOS-app Instellingen → Gateway, scan de QR-code (of plak de setup-code) en maak verbinding.
- De officiële app maakt automatisch verbinding. Als Apparaten een wachtend verzoek toont, controleer dan de rol en scopes voordat je het goedkeurt.
operator.admin.
Als terminalfallback kies je een ontdekte Gateway in de iOS-app (of schakel je
Handmatige host in en voer je host/poort in), en keur je daarna het verzoek goed op de Gateway-host:
requestId aangemaakt.
Voer openclaw devices list opnieuw uit vóór goedkeuring.
Optioneel: als de iOS-node altijd verbinding maakt vanaf een strikt beheerd subnet, kun je
je aanmelden voor automatische goedkeuring van nodes bij de eerste keer met expliciete CIDR’s of exacte IP’s:
role: node-koppelingen
zonder aangevraagde scopes. Koppelingen voor operator/browser en elke wijziging in rol, scope, metadata of
openbare sleutel vereisen nog steeds handmatige goedkeuring.
- Controleer de verbinding:
Push met relay-backend voor officiële builds
Officieel verspreide iOS-builds gebruiken de externe pushrelay in plaats van het ruwe APNs- token naar de Gateway te publiceren. Officiële App Store-builds uit de openbare releasebaan gebruiken de gehoste relay ophttps://ios-push-relay.openclaw.ai.
Aangepaste relay-deployments vereisen een bewust apart iOS-build-/deploymentpad waarvan de relay-URL overeenkomt met de Gateway-relay-URL. De openbare App Store-releasebaan accepteert geen aangepaste relay-URL-overschrijvingen. Als je een aangepaste relaybuild gebruikt, stel dan de bijpassende Gateway-relay-URL in:
- De iOS-app registreert zich bij de relay met App Attest en een StoreKit-apptransactie-JWS.
- De relay retourneert een ondoorzichtige relayhandle plus een verzendtoekenning met registratiescope.
- De iOS-app haalt de gekoppelde Gateway-identiteit op en neemt die op in de relayregistratie, zodat de relay-backed registratie aan die specifieke Gateway wordt gedelegeerd.
- De app stuurt die relay-backed registratie door naar de gekoppelde Gateway met
push.apns.register. - De Gateway gebruikt die opgeslagen relayhandle voor
push.test, achtergrondwekacties en wake-nudges. - Aangepaste Gateway-relay-URL’s moeten overeenkomen met de relay-URL die in de iOS-build is ingebakken.
- Als de app later verbinding maakt met een andere Gateway of een build met een andere relaybasis-URL, vernieuwt hij de relayregistratie in plaats van de oude binding opnieuw te gebruiken.
- Geen deploymentbreed relaytoken.
- Geen directe APNs-sleutel voor officiële relay-backed verzendingen uit de App Store.
- Installeer de officiële iOS-app.
- Optioneel: stel
gateway.push.apns.relay.baseUrlop de Gateway alleen in wanneer je een bewust aparte aangepaste relaybuild gebruikt. - Koppel de app aan de Gateway en laat deze de verbinding afronden.
- De app publiceert
push.apns.registerautomatisch nadat hij een APNs-token heeft, de operatorsessie verbonden is en de relayregistratie slaagt. - Daarna kunnen
push.test, reconnect-wakes en wake-nudges de opgeslagen relay-backed registratie gebruiken.
Achtergrond-alive-beacons
Wanneer iOS de app wekt voor een stille push, achtergrondverversing of significant-location-event, probeert de app kort opnieuw verbinding te maken als node en roept daarnanode.event aan met event: "node.presence.alive".
De Gateway legt dit alleen vast als lastSeenAtMs/lastSeenReason op de metadata van de gekoppelde node/het gekoppelde apparaat
nadat de geauthenticeerde identiteit van het nodeapparaat bekend is.
De app beschouwt een achtergrondwekactie alleen als succesvol vastgelegd wanneer de Gateway-response
handled: true bevat. Oudere Gateways kunnen node.event bevestigen met { "ok": true }; die response is
compatibel maar telt niet als een duurzame last-seen-update.
Compatibiliteitsopmerking:
OPENCLAW_APNS_RELAY_BASE_URLwerkt nog steeds als tijdelijke env-overschrijving voor de Gateway.- De openbare App Store-releasebaan weigert
OPENCLAW_PUSH_RELAY_BASE_URLvoor iOS-builds.
Authenticatie- en vertrouwensflow
De relay bestaat om twee beperkingen af te dwingen die directe APNs-op-de-Gateway niet kan bieden voor officiële iOS-builds:- Alleen echte OpenClaw iOS-builds die via Apple worden verspreid, kunnen de gehoste relay gebruiken.
- Een Gateway kan relay-backed pushes alleen verzenden voor iOS-apparaten die met die specifieke Gateway zijn gekoppeld.
-
iOS app -> gateway- De app koppelt eerst met de Gateway via de normale Gateway-authflow.
- Dat geeft de app een geauthenticeerde nodesessie plus een geauthenticeerde operatorsessie.
- De operatorsessie wordt gebruikt om
gateway.identity.getaan te roepen.
-
iOS app -> relay- De app roept de relayregistratie-eindpunten aan via HTTPS.
- De registratie bevat App Attest-bewijs plus een StoreKit-apptransactie-JWS.
- De relay valideert de bundel-ID, het App Attest-bewijs en het Apple-distributiebewijs, en vereist het officiële/productiedistributiepad.
- Dit blokkeert lokale Xcode-/dev-builds van het gebruik van de gehoste relay. Een lokale build kan ondertekend zijn, maar voldoet niet aan het officiële Apple-distributiebewijs dat de relay verwacht.
-
gateway identity delegation- Vóór relayregistratie haalt de app de gekoppelde Gateway-identiteit op via
gateway.identity.get. - De app neemt die Gateway-identiteit op in de payload voor relayregistratie.
- De relay retourneert een relayhandle en een verzendtoekenning met registratiescope die zijn gedelegeerd aan die Gateway-identiteit.
- Vóór relayregistratie haalt de app de gekoppelde Gateway-identiteit op via
-
gateway -> relay- De Gateway slaat de relayhandle en verzendtoekenning uit
push.apns.registerop. - Bij
push.test, reconnect-wakes en wake-nudges ondertekent de Gateway het verzendverzoek met zijn eigen apparaatidentiteit. - De relay verifieert zowel de opgeslagen verzendtoekenning als de Gateway-handtekening tegen de gedelegeerde Gateway-identiteit uit de registratie.
- Een andere Gateway kan die opgeslagen registratie niet opnieuw gebruiken, zelfs niet als die op een of andere manier de handle verkrijgt.
- De Gateway slaat de relayhandle en verzendtoekenning uit
-
relay -> APNs- De relay bezit de productie-APNs-referenties en het ruwe APNs-token voor de officiële build.
- De Gateway slaat het ruwe APNs-token nooit op voor relay-backed officiële builds.
- De relay verzendt de uiteindelijke push naar APNs namens de gekoppelde Gateway.
- Om productie-APNs-referenties buiten gebruikers-Gateways te houden.
- Om het opslaan van ruwe APNs-tokens van officiële builds op de Gateway te vermijden.
- Om gebruik van de gehoste relay alleen toe te staan voor officiële OpenClaw iOS-builds.
- Om te voorkomen dat één Gateway wake-pushes verzendt naar iOS-apparaten die bij een andere Gateway horen.
apps/ios/fastlane/.env slaat alleen
App Store Connect-auth op, zoals APP_STORE_CONNECT_KEY_ID en
APP_STORE_CONNECT_ISSUER_ID; het configureert geen directe APNs-levering voor lokale iOS-builds.
Aanbevolen opslag op de Gateway-host:
.p8-bestand niet en plaats het niet onder de repo-checkout.
Ontdekkingspaden
Bonjour (LAN)
De iOS-app browset_openclaw-gw._tcp op local. en, wanneer geconfigureerd, hetzelfde
wide-area DNS-SD-ontdekkingsdomein. Gateways op hetzelfde LAN verschijnen automatisch via local.;
cross-network-ontdekking kan het geconfigureerde wide-area-domein gebruiken zonder het beacontype te wijzigen.
Tailnet (cross-network)
Als mDNS wordt geblokkeerd, gebruik dan een unicast DNS-SD-zone (kies een domein; voorbeeld:openclaw.internal.) en Tailscale split DNS.
Zie Bonjour voor het CoreDNS-voorbeeld.
Handmatige host/poort
Schakel in Instellingen Handmatige host in en voer de Gateway-host + poort in (standaard18789).
Canvas + A2UI
De iOS-node rendert een WKWebView-canvas. Gebruiknode.invoke om het aan te sturen:
- De Gateway-canvas-host serveert
/__openclaw__/canvas/en/__openclaw__/a2ui/. - Het wordt geserveerd vanaf de Gateway-HTTP-server (dezelfde poort als
gateway.port, standaard18789). - De iOS-node houdt de ingebouwde scaffold als de verbonden standaardweergave.
canvas.a2ui.pushencanvas.a2ui.resetgebruiken de gebundelde app-eigen A2UI-pagina. - Externe Gateway-A2UI-pagina’s zijn render-only op iOS; native A2UI-knopacties worden alleen geaccepteerd vanuit gebundelde app-eigen pagina’s.
- Keer terug naar de ingebouwde scaffold met
canvas.navigateen{"url":""}.
Relatie met Computer Use
De iOS-app is een mobiele node-surface, geen Codex Computer Use-backend. Codex Computer Use encua-driver mcp besturen een lokale macOS-desktop via MCP-
tools; de iOS-app biedt iPhone-mogelijkheden via OpenClaw-nodeopdrachten
zoals canvas.*, camera.*, screen.*, location.* en talk.*.
Agents kunnen de iOS-app nog steeds via OpenClaw bedienen door node-
opdrachten aan te roepen, maar die calls verlopen via het Gateway-nodeprotocol en volgen de
foreground-/background-limieten van iOS. Gebruik Codex Computer Use
voor lokale desktopbesturing en deze pagina voor iOS-node-mogelijkheden.
Canvas eval / snapshot
Spraakwekfunctie + praatmodus
- Spraakactivering en Talk-modus zijn beschikbaar in Instellingen.
- OpenAI realtime Talk gebruikt clientbeheerde WebRTC wanneer
talk.realtime.transportwebrtcis; een explicietegateway-relay-configuratie blijft Gateway-beheerd. Zie Talk-modus. - iOS-nodes met Talk-ondersteuning adverteren de
talk-capability en kunnentalk.ptt.start,talk.ptt.stop,talk.ptt.cancelentalk.ptt.oncedeclareren; de Gateway staat die push-to-talk-opdrachten standaard toe voor vertrouwde Talk-geschikte nodes. - iOS kan achtergrondaudio onderbreken; beschouw spraakfuncties als best-effort wanneer de app niet actief is.
Veelvoorkomende fouten
NODE_BACKGROUND_UNAVAILABLE: breng de iOS-app naar de voorgrond (canvas-/camera-/schermopdrachten vereisen dit).A2UI_HOST_UNAVAILABLE: de gebundelde A2UI-pagina was niet bereikbaar in de app-WebView; houd de app op de voorgrond op het tabblad Scherm en probeer het opnieuw.- Koppelingsprompt verschijnt nooit: voer
openclaw devices listuit en keur handmatig goed. - Opnieuw verbinden mislukt na herinstallatie: het Keychain-koppelingstoken is gewist; koppel de node opnieuw.