Native Apps
One-line summary
Three native client apps (macOS, iOS, Android) act as thin node clients that expose device capabilities (camera, microphone, screen, location, contacts, etc.) to the Gateway over WebSocket, while providing a local chat UI and voice interaction.
Responsibilities
- Connect to the Gateway over WebSocket with Ed25519 device authentication and TLS certificate pinning
- Advertise device capabilities (camera, screen, location, voice, contacts, calendar, etc.) to the Gateway
- Execute Gateway-invoked commands (
camera.snap,location.get,screen.record,canvas.navigate, etc.) - Provide local chat interface with streaming responses and markdown rendering
- Support voice interaction: wake word detection and push-to-talk
- Display the A2UI canvas via embedded WebView with JavaScript bridge
Architecture diagram
Key source files
Shared (Apple platforms)
macOS
iOS
Android
WebSocket protocol (shared across all platforms)
Protocol version
All apps use protocol v3 (min=3, max=3).
Connect handshake
Node invoke flow
Device capabilities by platform
Node commands by platform
Platform differences
TLS and security
A2UI Canvas integration
All three platforms embed a WebView for the A2UI canvas:
How it connects to other modules
-
Depends on:
gateway/— WebSocket server handles all communication, serves canvas host, manages device authapps/shared/OpenClawKit/— shared Swift package for iOS + macOS (protocol, session, identity, commands)apps/shared/OpenClawChatUI/— shared chat UI components for iOS + macOS
-
Depended by:
- None — native apps are leaf clients
My blind spots
- Exact SwabbleKit wake word engine internals — third-party dependency, not OpenClaw source
- How
PeekabooBridgeHostCoordinatoron macOS handles UI automation — seems like a significant capability - APK auto-update mechanism on Android (
AppUpdateHandler) — how does it discover and apply updates? - Watch app features —
WatchConnectivityis referenced but the actual watchOS app was not found in the source tree - Whether Android supports the full set of iOS commands (contacts, calendar, reminders, photos) or if these are iOS-only
- How screen recording results are encoded and transmitted — size constraints for WebSocket frames
- Voice wake accuracy and battery impact across platforms
Change frequency
- iOS: High — most feature-rich platform, new commands and capabilities added regularly
- Android: Medium — follows iOS features with some platform-specific additions (SMS, foreground service)
- macOS: Medium — menu bar app with focused feature set, Peekaboo integration evolving
- Shared (OpenClawKit): Medium — protocol changes propagate here first, then to platform code
- Protocol (v3): Low — wire protocol is stable; capability additions don't require protocol changes