iOS & Android Clients
Relevant source files
The following files were used as context for generating this wiki page:
Introduction
The iOS and Android clients serve as mobile nodes within the Clawdbot ecosystem, providing portable interfaces for interacting with agents and visualizing data. These clients are categorized as "paired nodes" that extend Clawdbot's capabilities to mobile hardware, supporting features such as voice interaction, canvas rendering, and real-time messaging. Sources: src/agents/system-prompt.ts:153, skills/canvas/SKILL.md:5
Within the overall architecture, these mobile applications act as endpoints for the Node Bridge, allowing the central gateway to push content, notifications, and interactive web views directly to the user's mobile device. They facilitate a multi-platform environment where agents can perform tasks ranging from simple chat to complex visual presentations across desktop and mobile environments. Sources: skills/canvas/SKILL.md:12-20, package.json:115-125
Architecture and Node Integration
The mobile clients function as part of a distributed system connected via a Node Bridge. This bridge facilitates TCP communication between the central Clawdbot process and the mobile applications. Sources: skills/canvas/SKILL.md:13-19
Mobile Node Communication Flow
The following diagram illustrates how mobile nodes receive and render content from the central gateway.
The Node Bridge communicates URLs and commands to connected nodes, which then render the content in local views. Sources: skills/canvas/SKILL.md:13-20
Capabilities and Monitoring
Mobile nodes are identified and managed through specific CLI commands and system prompts. The nodes tool allows the primary agent to list, describe, and notify mobile nodes. Sources: src/agents/system-prompt.ts:153-154
| Component | Description |
|---|---|
| Node IDs | Unique identifiers for each mobile instance (e.g., mac-63599...). |
| Canvas | Ability to render HTML/JS content via a WebView. |
| Camera/Screen | Capabilities for remote visual access or monitoring via the node tool. |
| Notifications | Direct push notifications or alerts sent to mobile devices. |
Sources: src/agents/system-prompt.ts:153, skills/canvas/SKILL.md:104
Canvas and Web Content Rendering
Mobile clients feature a "Canvas View" used to display dynamic HTML content, visualizations, and dashboards. This system allows the agent to present interactive interfaces that go beyond simple text messaging. Sources: skills/canvas/SKILL.md:5-10
Network and Binding Logic
The URL used by mobile clients to access the Canvas depends on the gateway's network binding configuration. For mobile devices to reach the host, the gateway must typically be bound to a LAN or Tailnet interface. Sources: skills/canvas/SKILL.md:23-30
| Bind Mode | Client URL Target | Connectivity |
|---|---|---|
lan | LAN IP address | Local network only |
tailnet | Tailscale Hostname | Global (via VPN) |
auto | Tailscale > LAN | Best available |
Sources: skills/canvas/SKILL.md:25-30
Development and Build Management
The project uses a unified build system to manage mobile client compilation and deployment. Build scripts are defined in the root package.json to handle environment-specific requirements. Sources: package.json:115-125
iOS Development
The iOS client is a SwiftUI application. Its development workflow requires xcodegen to generate project files and fastlane for App Store Connect integration. Sources: apps/ios/README.md:1-25
- Project Generation:
pnpm ios:genrunsxcodegen. - Build/Run:
pnpm ios:runboots the simulator and launches the app. - Linting: Uses
swiftlintandswiftformat.
Sources: package.json:115-118, package.json:133-138
Android Development
The Android client is managed via Gradle. It supports standard debug and assemble tasks triggered from the root CLI. Sources: package.json:122-125
- Assemble:
./gradlew :app:assembleDebug. - Install/Run:
pnpm android:runinstalls the APK and starts the MainActivity viaadb.
Sources: package.json:122-125
Versioning and Release Guards
Mobile client versions are tracked in multiple locations to ensure consistency during releases. Sources: CLAUDE.md:183-188
- iOS Versioning: Located in
apps/ios/Sources/Info.plist(CFBundleShortVersionString). - Android Versioning: Located in
apps/android/app/build.gradle.kts(versionNameandversionCode). - Release Requirement: Operators must explicitly consent to version changes, and builds should favor real connected devices over simulators when available.
Sources: CLAUDE.md:184-188, AGENTS.md:184-188
Conclusion
The iOS and Android clients are essential components of the Clawdbot multi-node architecture. By integrating as mobile nodes, they enable high-fidelity interactions through the Canvas system and provide agents with access to mobile-specific capabilities like cameras and notifications, all while being managed through a centralized Node Bridge. Sources: skills/canvas/SKILL.md:12-20, src/agents/system-prompt.ts:153-154