Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,24 @@ If you want a personal, single-user assistant that feels local, fast, and always
> The OpenClaw-branded material and `openclaw ...` examples below are upstream or compatibility context, not the intended extracted Mirror-native surface.
> For Mirror-native operator paths in this repo, see `docs/mirror/MIRROR_OPERATOR_GUIDE.md`.

Preferred setup: run the onboarding wizard (`openclaw onboard`) in your terminal.
The wizard guides you step by step through setting up the gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on **macOS, Linux, and Windows (via WSL2; strongly recommended)**.
Works with npm, pnpm, or bun.
## Mirror-native entrypoints in this repo

Use these paths first when operating `mirror-runtime` directly:

```bash
mirror help
mirror status --json
mirror verify-lore --json
```

Mirror-native operator guide:

- `docs/mirror/MIRROR_OPERATOR_GUIDE.md`

## Legacy OpenClaw setup examples (upstream or compatibility context)

The examples below are preserved as upstream or compatibility context. They are not the intended extracted Mirror-native operator surface for this repository.

New install? Start here: [Getting started](https://docs.openclaw.ai/start/getting-started)

## Sponsors
Expand All @@ -52,7 +67,7 @@ Model note: while any model is supported, I strongly recommend **Anthropic Pro/M
- Models config + CLI: [Models](https://docs.openclaw.ai/concepts/models)
- Auth profile rotation (OAuth vs API keys) + fallbacks: [Model failover](https://docs.openclaw.ai/concepts/model-failover)

## Install (recommended)
## Legacy OpenClaw install (upstream or compatibility context)

Runtime: **Node ≥22**.

Expand All @@ -65,7 +80,7 @@ openclaw onboard --install-daemon

The wizard installs the Gateway daemon (launchd/systemd user service) so it stays running.

## Quick start (TL;DR)
## Legacy OpenClaw quick start (upstream or compatibility context)

Runtime: **Node ≥22**.

Expand Down Expand Up @@ -94,7 +109,7 @@ Upgrading? [Updating guide](https://docs.openclaw.ai/install/updating) (and run
Switch channels (git + npm): `openclaw update --channel stable|beta|dev`.
Details: [Development channels](https://docs.openclaw.ai/install/development-channels).

## From source (development)
## Legacy OpenClaw from source (upstream or compatibility context)

Prefer `pnpm` for builds from source. Bun is optional for running TypeScript directly.

Expand Down
11 changes: 0 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,6 @@
"./cli-entry": "./mirror.mjs"
},
"scripts": {
"android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
"android:install": "cd apps/android && ./gradlew :app:installDebug",
"android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
"android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
"build": "pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts && node --import tsx scripts/copy-mirror-runtime-assets.ts",
"build:mirror": "pnpm canvas:a2ui:bundle && tsdown --config tsdown.mirror.config.ts && node --import tsx scripts/copy-mirror-runtime-assets.ts",
"build:plugin-sdk:dts": "tsc -p tsconfig.plugin-sdk.dts.json",
Expand Down Expand Up @@ -85,10 +81,6 @@
"gateway:dev": "OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
"gateway:dev:reset": "OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
"ios:build": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
"ios:gen": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'",
"ios:open": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj'",
"ios:run": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'",
"lint": "oxlint --type-aware",
"lint:all": "pnpm lint && pnpm lint:swift",
"lint:docs": "pnpm dlx markdownlint-cli2",
Expand All @@ -97,9 +89,6 @@
"lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
"lint:tmp:no-random-messaging": "node scripts/check-no-random-messaging-tmp.mjs",
"lint:ui:no-raw-window-open": "node scripts/check-no-raw-window-open.mjs",
"mac:open": "open dist/OpenClaw.app",
"mac:package": "bash scripts/package-mac-app.sh",
"mac:restart": "bash scripts/restart-mac.sh",
"mirror": "node mirror.mjs",
"moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
"package:mirror-runtime": "pnpm build:mirror && node --import tsx scripts/assemble-mirror-runtime-dist.ts",
Expand Down
6 changes: 6 additions & 0 deletions test/mirror-package-boundary.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ describe("mirror package boundary", () => {
expect(packageJson.scripts?.["smoke:mirror"]).toBe(
"node --import tsx scripts/ci-mirror-smoke.ts",
);
expect(packageJson.scripts?.["android:assemble"]).toBeUndefined();
expect(packageJson.scripts?.["android:install"]).toBeUndefined();
expect(packageJson.scripts?.["android:test"]).toBeUndefined();
expect(packageJson.scripts?.["ios:build"]).toBeUndefined();
expect(packageJson.scripts?.["ios:gen"]).toBeUndefined();
expect(packageJson.scripts?.["ios:open"]).toBeUndefined();
expect(packageJson.scripts?.openclaw).toBeUndefined();
expect(packageJson.scripts?.["openclaw:rpc"]).toBeUndefined();
expect(packageJson.files).not.toContain("openclaw.mjs");
Expand Down
Loading