Files
openclaw/apps/ios
Hongwei Ma 06adadc759 feat: QR code scanning for gateway onboarding
iOS:
- QR scanner view using DataScannerViewController
- Photo library QR detection via CIDetector for saved QR images
- Deep link parser for openclaw://gateway URLs and base64url setup codes
- Onboarding wizard: full-screen welcome with "Scan QR Code" button,
  auto-connect on scan, back navigation, step indicators for manual flow

Backend:
- Add /pair qr action to device-pair extension for QR code generation
- TUI/WebUI differentiation: ASCII QR for TUI, markdown image for WebUI
- Telegram: send QR as media attachment via sendMessageTelegram
- Add data URI support to loadWebMedia for generic base64 media handling
- Export renderQrPngBase64 from plugin SDK for extension use

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit d79ed65be0)
2026-02-16 17:19:12 +01:00
..
2026-01-30 03:16:21 +01:00
2026-02-16 06:08:47 +01:00

OpenClaw (iOS)

This is an alpha iOS app that connects to an OpenClaw Gateway as a role: node.

Expect rough edges:

  • UI and onboarding are changing quickly.
  • Background behavior is not stable yet (foreground app is the supported mode right now).
  • Permissions are opt-in and the app should be treated as sensitive while we harden it.

What It Does

  • Connects to a Gateway over ws:// / wss://
  • Pairs a new device (approved from your bot)
  • Exposes phone services as node commands (camera, location, photos, calendar, reminders, etc; gated by iOS permissions)
  • Provides Talk + Chat surfaces (alpha)

If your Gateway has the device-pair plugin installed:

  1. In Telegram, message your bot: /pair
  2. Copy the setup code message
  3. On iOS: OpenClaw → Settings → Gateway → paste setup code → Connect
  4. Back in Telegram: /pair approve

Build And Run

Prereqs:

  • Xcode (current stable)
  • pnpm
  • xcodegen

From the repo root:

pnpm install
pnpm ios:open

Then in Xcode:

  1. Select the OpenClaw scheme
  2. Select a simulator or a connected device
  3. Run

If you're using a personal Apple Development team, you may need to change the bundle identifier in Xcode to a unique value so signing succeeds.

Build From CLI

pnpm ios:build

Tests

cd apps/ios
xcodegen generate
xcodebuild test -project OpenClaw.xcodeproj -scheme OpenClaw -destination "platform=iOS Simulator,name=iPhone 17"

Shared Code

  • apps/shared/OpenClawKit contains the shared transport/types used by the iOS app.