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.android → ai.remoteclaw.android
Affects all subpackages:
ai.openclaw.android.action → ai.remoteclaw.android.action
ai.openclaw.android.chat → ai.remoteclaw.android.chat
ai.openclaw.android.gateway → ai.remoteclaw.android.gateway
ai.openclaw.android.gateway.probe → ai.remoteclaw.android.gateway.probe
ai.openclaw.android.node → ai.remoteclaw.android.node
ai.openclaw.android.protocol → ai.remoteclaw.android.protocol
ai.openclaw.android.tools → ai.remoteclaw.android.tools
ai.openclaw.android.ui → ai.remoteclaw.android.ui
ai.openclaw.android.ui.chat → ai.remoteclaw.android.ui.chat
ai.openclaw.android.ui.mobile → ai.remoteclaw.android.ui.mobile
ai.openclaw.android.voice → ai.remoteclaw.android.voice
Build config : apps/android/app/build.gradle.kts — applicationId, namespace
Directory renames :
apps/android/app/src/main/java/ai/openclaw → apps/android/app/src/main/java/ai/remoteclaw
apps/android/app/src/test/java/ai/openclaw → apps/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.ios → ai.remoteclaw.ios
ai.openclaw.ios.bgrefresh → ai.remoteclaw.ios.bgrefresh
ai.openclaw.ios.share → ai.remoteclaw.ios.share
ai.openclaw.ios.watchkitapp → ai.remoteclaw.ios.watchkitapp
ai.openclaw.ios.watchkitapp.extension → ai.remoteclaw.ios.watchkitapp.extension
ai.openclaw.ios.tests → ai.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 : OpenClaw → RemoteClaw, OpenClawShareExtension → RemoteClawShareExtension, OpenClawWatchApp → RemoteClawWatchApp, OpenClawWatchExtension → RemoteClawWatchExtension, OpenClawTests → RemoteClawTests
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):
OpenClaw → RemoteClaw (main executable)
OpenClawIPC → RemoteClawIPC (library)
OpenClawDiscovery → RemoteClawDiscovery (library)
OpenClawMacCLI → RemoteClawMacCLI (executable, product name openclaw-mac → remoteclaw-mac)
OpenClawIPCTests → RemoteClawIPCTests (test target)
Directory renames :
apps/macos/Sources/OpenClaw → apps/macos/Sources/RemoteClaw
apps/macos/Sources/OpenClawDiscovery → apps/macos/Sources/RemoteClawDiscovery
apps/macos/Sources/OpenClawIPC → apps/macos/Sources/RemoteClawIPC
apps/macos/Sources/OpenClawMacCLI → apps/macos/Sources/RemoteClawMacCLI
apps/macos/Sources/OpenClawProtocol → apps/macos/Sources/RemoteClawProtocol
apps/macos/Tests/OpenClawIPCTests → apps/macos/Tests/RemoteClawIPCTests
Bundle IDs / app groups / service identifiers :
ai.openclaw.mac → ai.remoteclaw.mac
ai.openclaw.mac.deeplink → ai.remoteclaw.mac.deeplink
ai.openclaw.mac.plist → ai.remoteclaw.mac.plist
ai.openclaw.gateway → ai.remoteclaw.gateway
ai.openclaw.macos.gateway → ai.remoteclaw.macos.gateway
ai.openclaw.canvaswatcher → ai.remoteclaw.canvaswatcher
ai.openclaw.configwatcher → ai.remoteclaw.configwatcher
ai.openclaw.peekaboo → ai.remoteclaw.peekaboo
ai.openclaw.screenRecord.writer → ai.remoteclaw.screenRecord.writer
ai.openclaw.remote.tunnel.port → ai.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: OpenClawKit → RemoteClawKit
Products: OpenClawKit, OpenClawChatUI, OpenClawProtocol → RemoteClawKit, RemoteClawChatUI, RemoteClawProtocol
Directory renames :
apps/shared/OpenClawKit → apps/shared/RemoteClawKit
apps/shared/OpenClawKit/Sources/OpenClawChatUI → apps/shared/RemoteClawKit/Sources/RemoteClawChatUI
apps/shared/OpenClawKit/Sources/OpenClawKit → apps/shared/RemoteClawKit/Sources/RemoteClawKit
apps/shared/OpenClawKit/Sources/OpenClawProtocol → apps/shared/RemoteClawKit/Sources/RemoteClawProtocol
apps/shared/OpenClawKit/Tests/OpenClawKitTests → apps/shared/RemoteClawKit/Tests/RemoteClawKitTests
All Swift files : Update import OpenClawKit, import OpenClawChatUI, import OpenClawProtocol → import 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:
Shared first — Rename OpenClawKit package and directories, update Package.swift
macOS second — Rename modules, update Package.swift dependency on shared, rename directories
iOS third — Update project.yml, bundle IDs, signing configs, Fastlane, entitlements
Android fourth — Rename package directories, update Gradle, Kotlin declarations
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)
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):
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.android→ai.remoteclaw.androidAffects all subpackages:
ai.openclaw.android.action→ai.remoteclaw.android.actionai.openclaw.android.chat→ai.remoteclaw.android.chatai.openclaw.android.gateway→ai.remoteclaw.android.gatewayai.openclaw.android.gateway.probe→ai.remoteclaw.android.gateway.probeai.openclaw.android.node→ai.remoteclaw.android.nodeai.openclaw.android.protocol→ai.remoteclaw.android.protocolai.openclaw.android.tools→ai.remoteclaw.android.toolsai.openclaw.android.ui→ai.remoteclaw.android.uiai.openclaw.android.ui.chat→ai.remoteclaw.android.ui.chatai.openclaw.android.ui.mobile→ai.remoteclaw.android.ui.mobileai.openclaw.android.voice→ai.remoteclaw.android.voiceBuild config:
apps/android/app/build.gradle.kts— applicationId, namespaceDirectory renames:
apps/android/app/src/main/java/ai/openclaw→apps/android/app/src/main/java/ai/remoteclawapps/android/app/src/test/java/ai/openclaw→apps/android/app/src/test/java/ai/remoteclawAll Kotlin files: Update
packagedeclarations andimportstatements.2. iOS (
apps/ios/— 78 files, 725 occurrences)Bundle IDs:
ai.openclaw.ios→ai.remoteclaw.iosai.openclaw.ios.bgrefresh→ai.remoteclaw.ios.bgrefreshai.openclaw.ios.share→ai.remoteclaw.ios.shareai.openclaw.ios.watchkitapp→ai.remoteclaw.ios.watchkitappai.openclaw.ios.watchkitapp.extension→ai.remoteclaw.ios.watchkitapp.extensionai.openclaw.ios.tests→ai.remoteclaw.ios.testsai.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 identityapps/ios/Signing.xcconfig— signing configapps/ios/LocalSigning.xcconfig.example— example signing templateapps/ios/fastlane/Appfile— app identifierapps/ios/fastlane/Fastfile— build lanes, scheme namesTarget/scheme renames:
OpenClaw→RemoteClaw,OpenClawShareExtension→RemoteClawShareExtension,OpenClawWatchApp→RemoteClawWatchApp,OpenClawWatchExtension→RemoteClawWatchExtension,OpenClawTests→RemoteClawTestsEntitlements:
apps/ios/Sources/OpenClaw.entitlements→ rename file + update app group identifiers insideInfo.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.plist3. macOS (
apps/macos/— 236 files, 1,078 occurrences)Swift module renames (in
apps/macos/Package.swift):OpenClaw→RemoteClaw(main executable)OpenClawIPC→RemoteClawIPC(library)OpenClawDiscovery→RemoteClawDiscovery(library)OpenClawMacCLI→RemoteClawMacCLI(executable, product nameopenclaw-mac→remoteclaw-mac)OpenClawIPCTests→RemoteClawIPCTests(test target)Directory renames:
apps/macos/Sources/OpenClaw→apps/macos/Sources/RemoteClawapps/macos/Sources/OpenClawDiscovery→apps/macos/Sources/RemoteClawDiscoveryapps/macos/Sources/OpenClawIPC→apps/macos/Sources/RemoteClawIPCapps/macos/Sources/OpenClawMacCLI→apps/macos/Sources/RemoteClawMacCLIapps/macos/Sources/OpenClawProtocol→apps/macos/Sources/RemoteClawProtocolapps/macos/Tests/OpenClawIPCTests→apps/macos/Tests/RemoteClawIPCTestsBundle IDs / app groups / service identifiers:
ai.openclaw.mac→ai.remoteclaw.macai.openclaw.mac.deeplink→ai.remoteclaw.mac.deeplinkai.openclaw.mac.plist→ai.remoteclaw.mac.plistai.openclaw.gateway→ai.remoteclaw.gatewayai.openclaw.macos.gateway→ai.remoteclaw.macos.gatewayai.openclaw.canvaswatcher→ai.remoteclaw.canvaswatcherai.openclaw.configwatcher→ai.remoteclaw.configwatcherai.openclaw.peekaboo→ai.remoteclaw.peekabooai.openclaw.screenRecord.writer→ai.remoteclaw.screenRecord.writerai.openclaw.remote.tunnel.port→ai.remoteclaw.remote.tunnel.portInfo.plist:
apps/macos/Sources/OpenClaw/Resources/Info.plist— rename parent dir + update contentsAll Swift files: Update
import OpenClaw*statements toimport RemoteClaw*.4. Shared (
apps/shared/— 73 files, 505 occurrences)Package renames (in
apps/shared/OpenClawKit/Package.swift):OpenClawKit→RemoteClawKitOpenClawKit,OpenClawChatUI,OpenClawProtocol→RemoteClawKit,RemoteClawChatUI,RemoteClawProtocolDirectory renames:
apps/shared/OpenClawKit→apps/shared/RemoteClawKitapps/shared/OpenClawKit/Sources/OpenClawChatUI→apps/shared/RemoteClawKit/Sources/RemoteClawChatUIapps/shared/OpenClawKit/Sources/OpenClawKit→apps/shared/RemoteClawKit/Sources/RemoteClawKitapps/shared/OpenClawKit/Sources/OpenClawProtocol→apps/shared/RemoteClawKit/Sources/RemoteClawProtocolapps/shared/OpenClawKit/Tests/OpenClawKitTests→apps/shared/RemoteClawKit/Tests/RemoteClawKitTestsAll Swift files: Update
import OpenClawKit,import OpenClawChatUI,import OpenClawProtocol→import RemoteClawKit,import RemoteClawChatUI,import RemoteClawProtocol.Cross-platform impact: macOS Package.swift and iOS project.yml both reference
OpenClawKitas 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):
scripts/package-mac-app.shscripts/package-mac-dist.shscripts/codesign-mac-app.shscripts/make_appcast.shscripts/mobile-reauth.shscripts/run-node.mjsscripts/build_icon.shscripts/build-and-run-mac.shscripts/ios-configure-signing.shscripts/protocol-gen-swift.tsscripts/dev/ios-node-e2e.tsscripts/dev/ios-pull-gateway-log.shscripts/protocol-gen.tsscripts/dev/test-device-pair-telegram.tsscripts/bundle-a2ui.shscripts/create-dmg.shscripts/notarize-mac-artifact.shURL Replacements
URLs found in native apps and scripts that need updating:
https://openclaw.aihttps://remoteclaw.comhttps://openclaw.ai/share-self-testhttps://remoteclaw.com/share-self-testhttps://openclaw.bot/install-cli.shhttps://github.com/openclaw/openclawhttps://github.com/remoteclaw/remoteclawhttp://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 useremoteclaw.Execution Strategy
Recommended order to minimize merge conflicts and build breakage:
OpenClawKitpackage and directories, update Package.swiftEach platform can be a separate commit within one PR, or split across PRs if preferred.
Acceptance Criteria
ai.remoteclaw.androidwith all Kotlin package declarations and imports updated across 92 filesai/openclawtoai/remoteclawai.remoteclaw.ios.*pattern across project.yml, xcconfig, Fastlane, entitlements, and Info.plist filesOpenClaw*toRemoteClaw*RemoteClaw,RemoteClawIPC,RemoteClawDiscovery,RemoteClawMacCLI,RemoteClawProtocolOpenClaw*toRemoteClaw*ai.remoteclaw.*patternOpenClawKitpackage renamed toRemoteClawKitwith productsRemoteClawKit,RemoteClawChatUI,RemoteClawProtocolOpenClaw*toRemoteClaw*import OpenClaw*statements updated toimport RemoteClaw*across macOS, iOS, and sharedopenclaw.ai/openclaw.bot/github.com/openclawURLs updated to RemoteClaw equivalentsgrep -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.tsreturns zero matches (excluding.build/directories)cd apps/macos && swift build)cd apps/android && ./gradlew assembleDebug)