Skip to content

Rebrand native apps (OpenClaw -> RemoteClaw) #124

@alexey-pelykh

Description

@alexey-pelykh

Summary

Rebrand all native companion apps and their build scripts from OpenClaw to RemoteClaw. Covers 4 platforms (Android, iOS, macOS, shared) plus 17 native-app-specific build/package/sign scripts.

Prerequisite: Dead code must be removed first (#123). That PR deletes ~5 dead macOS files (SkillsSettings, SkillsModels, ModelCatalogLoader + tests) and removes their UI integration points, reducing the rebrand surface.

Scope

~479 files, ~2,812 occurrences (after WI-104 dead code removal):

Platform Files Occurrences Key Changes
Android 92 416 Package name, Kotlin declarations, Gradle, manifest
iOS 78 725 Bundle IDs, targets, signing, Fastlane, XcodeGen
macOS 236 1,078 5 Swift modules, Package.swift, bundle IDs, app groups
Shared 73 505 3 Swift packages, import statements
Scripts 17 76 Native app build/package/sign scripts

Case variations: OpenClaw (pascal, ~1,822), openclaw (lower, ~414), ai.openclaw.* (bundle IDs).

Out of scope: Non-app scripts and README (covered by #215). Test infrastructure cascade (covered by #216). src/ production code (covered by #214).


Platform Details

1. Android (apps/android/ — 92 files, 416 occurrences)

Package name: ai.openclaw.androidai.remoteclaw.android

Affects all subpackages:

  • ai.openclaw.android.actionai.remoteclaw.android.action
  • ai.openclaw.android.chatai.remoteclaw.android.chat
  • ai.openclaw.android.gatewayai.remoteclaw.android.gateway
  • ai.openclaw.android.gateway.probeai.remoteclaw.android.gateway.probe
  • ai.openclaw.android.nodeai.remoteclaw.android.node
  • ai.openclaw.android.protocolai.remoteclaw.android.protocol
  • ai.openclaw.android.toolsai.remoteclaw.android.tools
  • ai.openclaw.android.uiai.remoteclaw.android.ui
  • ai.openclaw.android.ui.chatai.remoteclaw.android.ui.chat
  • ai.openclaw.android.ui.mobileai.remoteclaw.android.ui.mobile
  • ai.openclaw.android.voiceai.remoteclaw.android.voice

Build config: apps/android/app/build.gradle.kts — applicationId, namespace

Directory renames:

  • apps/android/app/src/main/java/ai/openclawapps/android/app/src/main/java/ai/remoteclaw
  • apps/android/app/src/test/java/ai/openclawapps/android/app/src/test/java/ai/remoteclaw

All Kotlin files: Update package declarations and import statements.

2. iOS (apps/ios/ — 78 files, 725 occurrences)

Bundle IDs:

  • ai.openclaw.iosai.remoteclaw.ios
  • ai.openclaw.ios.bgrefreshai.remoteclaw.ios.bgrefresh
  • ai.openclaw.ios.shareai.remoteclaw.ios.share
  • ai.openclaw.ios.watchkitappai.remoteclaw.ios.watchkitapp
  • ai.openclaw.ios.watchkitapp.extensionai.remoteclaw.ios.watchkitapp.extension
  • ai.openclaw.ios.testsai.remoteclaw.ios.tests
  • Test bundle IDs: ai.openclaw.ios.test.mariano.*ai.remoteclaw.ios.test.mariano.*

Build config files:

  • apps/ios/project.yml — XcodeGen project definition (targets, bundle IDs, schemes)
  • apps/ios/Config/Signing.xcconfig — team/signing identity
  • apps/ios/Signing.xcconfig — signing config
  • apps/ios/LocalSigning.xcconfig.example — example signing template
  • apps/ios/fastlane/Appfile — app identifier
  • apps/ios/fastlane/Fastfile — build lanes, scheme names

Target/scheme renames: OpenClawRemoteClaw, OpenClawShareExtensionRemoteClawShareExtension, OpenClawWatchAppRemoteClawWatchApp, OpenClawWatchExtensionRemoteClawWatchExtension, OpenClawTestsRemoteClawTests

Entitlements: apps/ios/Sources/OpenClaw.entitlements → rename file + update app group identifiers inside

Info.plist files: apps/ios/Sources/Info.plist, apps/ios/ShareExtension/Info.plist, apps/ios/WatchApp/Info.plist, apps/ios/WatchExtension/Info.plist, apps/ios/Tests/Info.plist

3. macOS (apps/macos/ — 236 files, 1,078 occurrences)

Swift module renames (in apps/macos/Package.swift):

  • OpenClawRemoteClaw (main executable)
  • OpenClawIPCRemoteClawIPC (library)
  • OpenClawDiscoveryRemoteClawDiscovery (library)
  • OpenClawMacCLIRemoteClawMacCLI (executable, product name openclaw-macremoteclaw-mac)
  • OpenClawIPCTestsRemoteClawIPCTests (test target)

Directory renames:

  • apps/macos/Sources/OpenClawapps/macos/Sources/RemoteClaw
  • apps/macos/Sources/OpenClawDiscoveryapps/macos/Sources/RemoteClawDiscovery
  • apps/macos/Sources/OpenClawIPCapps/macos/Sources/RemoteClawIPC
  • apps/macos/Sources/OpenClawMacCLIapps/macos/Sources/RemoteClawMacCLI
  • apps/macos/Sources/OpenClawProtocolapps/macos/Sources/RemoteClawProtocol
  • apps/macos/Tests/OpenClawIPCTestsapps/macos/Tests/RemoteClawIPCTests

Bundle IDs / app groups / service identifiers:

  • ai.openclaw.macai.remoteclaw.mac
  • ai.openclaw.mac.deeplinkai.remoteclaw.mac.deeplink
  • ai.openclaw.mac.plistai.remoteclaw.mac.plist
  • ai.openclaw.gatewayai.remoteclaw.gateway
  • ai.openclaw.macos.gatewayai.remoteclaw.macos.gateway
  • ai.openclaw.canvaswatcherai.remoteclaw.canvaswatcher
  • ai.openclaw.configwatcherai.remoteclaw.configwatcher
  • ai.openclaw.peekabooai.remoteclaw.peekaboo
  • ai.openclaw.screenRecord.writerai.remoteclaw.screenRecord.writer
  • ai.openclaw.remote.tunnel.portai.remoteclaw.remote.tunnel.port

Info.plist: apps/macos/Sources/OpenClaw/Resources/Info.plist — rename parent dir + update contents

All Swift files: Update import OpenClaw* statements to import RemoteClaw*.

4. Shared (apps/shared/ — 73 files, 505 occurrences)

Package renames (in apps/shared/OpenClawKit/Package.swift):

  • Package: OpenClawKitRemoteClawKit
  • Products: OpenClawKit, OpenClawChatUI, OpenClawProtocolRemoteClawKit, RemoteClawChatUI, RemoteClawProtocol

Directory renames:

  • apps/shared/OpenClawKitapps/shared/RemoteClawKit
  • apps/shared/OpenClawKit/Sources/OpenClawChatUIapps/shared/RemoteClawKit/Sources/RemoteClawChatUI
  • apps/shared/OpenClawKit/Sources/OpenClawKitapps/shared/RemoteClawKit/Sources/RemoteClawKit
  • apps/shared/OpenClawKit/Sources/OpenClawProtocolapps/shared/RemoteClawKit/Sources/RemoteClawProtocol
  • apps/shared/OpenClawKit/Tests/OpenClawKitTestsapps/shared/RemoteClawKit/Tests/RemoteClawKitTests

All Swift files: Update import OpenClawKit, import OpenClawChatUI, import OpenClawProtocolimport RemoteClawKit, import RemoteClawChatUI, import RemoteClawProtocol.

Cross-platform impact: macOS Package.swift and iOS project.yml both reference OpenClawKit as a dependency — update those references too.

5. Native App Build Scripts (scripts/ — 17 files, 76 occurrences)

These are the app-specific build/package/sign scripts (non-app scripts covered by #215):

Script Refs What to change
scripts/package-mac-app.sh 23 App name, bundle paths, binary names
scripts/package-mac-dist.sh 10 Distribution package paths, identifiers
scripts/codesign-mac-app.sh 6 Signing identity, bundle references
scripts/make_appcast.sh 4 Appcast XML references
scripts/mobile-reauth.sh 4 Bundle ID references
scripts/run-node.mjs 4 Binary/process name
scripts/build_icon.sh 3 Output paths
scripts/build-and-run-mac.sh 3 Build product name, paths
scripts/ios-configure-signing.sh 3 Bundle ID, config paths
scripts/protocol-gen-swift.ts 3 Output module name
scripts/dev/ios-node-e2e.ts 3 Bundle ID, app references
scripts/dev/ios-pull-gateway-log.sh 3 Bundle ID for log path
scripts/protocol-gen.ts 2 Module name references
scripts/dev/test-device-pair-telegram.ts 2 Bundle ID
scripts/bundle-a2ui.sh 1 Build product path
scripts/create-dmg.sh 1 DMG volume name or app name
scripts/notarize-mac-artifact.sh 1 Notarization bundle ID

URL Replacements

URLs found in native apps and scripts that need updating:

Old URL New URL
https://openclaw.ai https://remoteclaw.com
https://openclaw.ai/share-self-test https://remoteclaw.com/share-self-test
https://openclaw.bot/install-cli.sh Update to RemoteClaw install URL
https://github.com/openclaw/openclaw https://github.com/remoteclaw/remoteclaw
http://openclaw.local:18789/ http://remoteclaw.local:18789/

Test fixture URLs (e.g., http://gw.example.com/releases/openclaw.apk, https://evil.example.com/releases/openclaw.apk) should also be updated to use remoteclaw.


Execution Strategy

Recommended order to minimize merge conflicts and build breakage:

  1. Shared first — Rename OpenClawKit package and directories, update Package.swift
  2. macOS second — Rename modules, update Package.swift dependency on shared, rename directories
  3. iOS third — Update project.yml, bundle IDs, signing configs, Fastlane, entitlements
  4. Android fourth — Rename package directories, update Gradle, Kotlin declarations
  5. Scripts last — Update all 17 native app scripts

Each platform can be a separate commit within one PR, or split across PRs if preferred.

Acceptance Criteria

  • Given dead code is removed (Remove dead code from native apps (skills UI, wizard/OAuth, model catalog) #123)
  • When native apps are rebranded
  • Then Android package name is ai.remoteclaw.android with all Kotlin package declarations and imports updated across 92 files
  • And Android source directories renamed from ai/openclaw to ai/remoteclaw
  • And iOS bundle IDs updated to ai.remoteclaw.ios.* pattern across project.yml, xcconfig, Fastlane, entitlements, and Info.plist files
  • And iOS targets/schemes renamed from OpenClaw* to RemoteClaw*
  • And macOS Package.swift modules renamed: RemoteClaw, RemoteClawIPC, RemoteClawDiscovery, RemoteClawMacCLI, RemoteClawProtocol
  • And macOS source directories renamed from OpenClaw* to RemoteClaw*
  • And macOS bundle IDs and app groups updated to ai.remoteclaw.* pattern
  • And shared OpenClawKit package renamed to RemoteClawKit with products RemoteClawKit, RemoteClawChatUI, RemoteClawProtocol
  • And shared source directories renamed from OpenClaw* to RemoteClaw*
  • And all Swift import OpenClaw* statements updated to import RemoteClaw* across macOS, iOS, and shared
  • And cross-package references updated (macOS Package.swift → shared, iOS project.yml → shared)
  • And all 17 native app build/package/sign scripts updated with new names, bundle IDs, and paths
  • And all openclaw.ai / openclaw.bot / github.com/openclaw URLs updated to RemoteClaw equivalents
  • And grep -ri "openclaw" apps/ scripts/build_icon.sh scripts/build-and-run-mac.sh scripts/bundle-a2ui.sh scripts/codesign-mac-app.sh scripts/create-dmg.sh scripts/ios-configure-signing.sh scripts/make_appcast.sh scripts/notarize-mac-artifact.sh scripts/package-mac-app.sh scripts/package-mac-dist.sh scripts/mobile-reauth.sh scripts/protocol-gen-swift.ts scripts/protocol-gen.ts scripts/run-node.mjs scripts/dev/ios-node-e2e.ts scripts/dev/ios-pull-gateway-log.sh scripts/dev/test-device-pair-telegram.ts returns zero matches (excluding .build/ directories)
  • And macOS builds successfully (cd apps/macos && swift build)
  • And Android builds successfully (cd apps/android && ./gradlew assembleDebug)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions