自分専用のAI執事「OpenClaw」導入ガイド:エラー回避と完全セットアップ手順

1) Article(メイン) 2) FAQPage 3) BreadcrumbList(パンくず)

「AIに『やり方』を聞く時代は終わりました。これからはAIに『やっていただく』時代です。」

今、GitHubで大きな注目を集めているOSS、「OpenClaw(旧Clawdbot)」をご存知でしょうか。次から次へと名前の変更があったのでインストールしなおすことにしました。

Clawdbot(openclaw)インストール全手順|Node 24+Claude OAuth同期の実機検証 | 気まぐれブログ

簡単に言えば、これは「あなたのPCの中に住む優秀な執事」です。SlackやDiscordから話しかけるだけで、PC内のファイルを操作したり、サーバーを管理したり、Web上の情報を集めたりと、あらゆるタスクを自律的に代行してくれます。

最大の特徴は、クラウドサービスではなく「ローカルで動く」こと。自分のデータは自分の手元に置いたまま、信頼できるAIパートナーとの協業環境を構築できるのです。

本記事では、このOpenClawのインストール方法について解説します。インストールするOSはUbuntu25.04とします。さらにSSH接続したリモートPCです。

目次

インストール前に、Nodeのバージョンを確認しておきましょう。

node -v
npm -v

結果は以下ですが、この npm warn について(結論:今は無視でOK)

node -v
npm -v
v24.13.0
npm warn Unknown project config “allow-build-scripts”. This will stop working in the next major version of npm.
11.6.2

npm warn Unknown project config "allow-build-scripts"... は、

  • プロジェクト or 自分の環境の .npmrc に allow-build-scripts が書いてある
  • でも npm 11 系だとそれを 「知らん設定やで」って警告してる

…ってだけで、現時点では致命傷じゃないことがほとんど。

直したいなら(任意):

# どこで定義されてるか確認
npm config get userconfig
npm config get globalconfig

# まずプロジェクト直下を探す
ls -la .npmrc

# もし .npmrc に書いてあったら該当行を消す/コメントアウト

ここからが本番、公式サイトからクローンを作成します。そして作成されたディレクトリに移動します。

openclaw/openclaw: Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

git clone https://github.com/openclaw/openclaw.git
cd openclaw

次に、OpenClawのプログラムを動かすために必要なパッケージ管理ツール「pnpm」を使えるように準備(インストール)する作業です。

corepack enable
pnpm -v || corepack prepare pnpm@latest --activate
pnpm -v

結果は以下となり、pnpm 10.23.0 が入ったので、次はそのまま 依存 → UI → ビルド → onboard の順でいけそうです。

mamu@evo-x2:~/openclaw$ corepack enable
mamu@evo-x2:~/openclaw$ pnpm -v || corepack prepare pnpm@latest –activate
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-10.23.0.tgz
? Do you want to continue? [Y/n] y

10.23.0
mamu@evo-x2:~/openclaw$ pnpm -v
10.23.0

先ほどの手順で「道具(pnpm)」の準備ができたので、ここからは「OpenClaw本体の組み立て(構築)作業」に入っています。

料理に例えると、「材料を買ってきて(install)、盛り付けの準備をして(ui:build)、料理を完成させる(build)」という流れです。

pnpm install
pnpm ui:build
pnpm build

結果は以下です。pnpm installui:buildbuild まで 成功。これは「意味不明でやってる」どころか、ログ的にはかなり綺麗に進んでる部類。

mamu@evo-x2:~/openclaw$ pnpm install
pnpm ui:build
pnpm build
Scope: all 34 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +1004
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

╭───────────────────────────────────────────────╮
│ │
│ Update available! 10.23.0 → 10.28.2. │
│ Changelog: https://pnpm.io/v/10.28.2 │
│ To update, run: corepack use pnpm@10.28.2 │
│ │
╰───────────────────────────────────────────────╯

 WARN  Tarball download average speed 16 KiB/s (size 31 KiB) is below 50 KiB/s: https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz (GET)edb-linux-x64-musl@0.23.0: 28.44 MB/48.03 MB
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: /home/mamu/.local/share/pnpm/store/v10
Virtual store is at: node_modules/.pnpm
Downloading @lancedb/lancedb-linux-x64-musl@0.23.0: 48.03 MB/48.03 MB, done
Downloading @wasm-audio-decoders/opus-ml@0.0.2: 6.39 MB/6.39 MB, done
Downloading @img/sharp-libvips-linux-x64@1.2.4: 7.53 MB/7.53 MB, done
Downloading @img/sharp-libvips-linuxmusl-x64@1.2.4: 7.65 MB/7.65 MB, done
Downloading @rolldown/binding-linux-x64-musl@1.0.0-rc.3: 8.26 MB/8.26 MB, done
Downloading @napi-rs/canvas-linux-x64-gnu@0.1.90: 13.91 MB/13.91 MB, done
Downloading pdfjs-dist@5.4.624: 9.97 MB/9.97 MB, done
Downloading @lancedb/lancedb-linux-x64-gnu@0.23.0: 47.87 MB/47.87 MB, done
Downloading @rolldown/binding-linux-x64-gnu@1.0.0-rc.3: 8.30 MB/8.30 MB, done
Downloading node-llama-cpp@3.15.1: 28.13 MB/28.13 MB, done
Downloading @typescript/native-preview-linux-x64@7.0.0-dev.20260205.1: 8.33 MB/8.33 MB, done
Downloading @node-llama-cpp/linux-x64@3.15.1: 7.16 MB/7.16 MB, done
Downloading ogg-opus-decoder@1.7.3: 6.87 MB/6.87 MB, done
Downloading @napi-rs/canvas-linux-x64-musl@0.1.90: 13.30 MB/13.30 MB, done
Downloading @oxlint/linux-x64-gnu@1.43.0: 5.25 MB/5.25 MB, done
Downloading @node-llama-cpp/linux-x64-vulkan@3.15.1: 23.80 MB/23.80 MB, done
Downloading @napi-rs/canvas-linux-x64-gnu@0.1.89: 13.88 MB/13.88 MB, done
Downloading @oxlint-tsgolint/linux-x64@0.11.4: 11.62 MB/11.62 MB, done
Downloading @napi-rs/canvas-linux-x64-musl@0.1.89: 13.28 MB/13.28 MB, done
Downloading @node-llama-cpp/linux-x64-cuda@3.15.1: 121.76 MB/121.76 MB, done
Downloading @node-llama-cpp/linux-x64-cuda-ext@3.15.1: 195.17 MB/195.17 MB, done
Progress: resolved 1004, reused 0, downloaded 1003, added 1004, done
node_modules/.pnpm/protobufjs@7.5.4/node_modules/protobufjs: Running postinstall script, done in 91ms
node_modules/.pnpm/node-llama-cpp@3.15.1_typescript@5.9.3/node_modules/node-llama-cpp: Running postinstall script…
node_modules/.pnpm/node-llama-cpp@3.15.1_typescript@5.9.3/node_modules/node-llama-cpp: Running postinstall script, done in 366msodules/.pnpm/protobufjs@6.8.8/node_modules/protobufjs: Running postinstall script, done in 112ms
node_modules/.pnpm/esbuild@0.27.3/node_modules/esbuild: Running postinstall script, done in 111ms
node_modules/.pnpm/protobufjs@8.0.0/node_modules/protobufjs: Running postinstall script…
node_modules/.pnpm/protobufjs@8.0.0/node_modules/protobufjs: Running postinstall script, done in 74mspto-nodejs: Running p
node_modules/.pnpm/@matrix-org+matrix-sdk-crypto-nodejs@0.4.0/node_modules/@matrix-org/matrix-sdk-crypto-nodejs: Running postinstall script, done in 1s
node_modules/.pnpm/@whiskeysockets+baileys@7.0.0-rc.9_audio-decode@2.2.3_sharp@0.34.5/node_modules/@whiskeysockets/baileysnode_modules/.pnpm/@whiskeysockets+baileys@7.0.0-rc.9_audio-decode@2.2.3_sharp@0.34.5/node_modules/@whiskeysockets/baileys: Running preinstall script, done in 54ms

dependencies:
+ @agentclientprotocol/sdk 0.14.1
+ @aws-sdk/client-bedrock 3.984.0
+ @buape/carbon 0.14.0
+ @clack/prompts 1.0.0
+ @grammyjs/runner 2.0.3
+ @grammyjs/transformer-throttler 1.2.1
+ @homebridge/ciao 1.3.4
+ @larksuiteoapi/node-sdk 1.58.0
+ @line/bot-sdk 10.6.0
+ @lydell/node-pty 1.2.0-beta.3
+ @mariozechner/pi-agent-core 0.52.6
+ @mariozechner/pi-ai 0.52.6
+ @mariozechner/pi-coding-agent 0.52.6
+ @mariozechner/pi-tui 0.52.6
+ @mozilla/readability 0.6.0
+ @napi-rs/canvas 0.1.89
+ @sinclair/typebox 0.34.47
+ @slack/bolt 4.6.0
+ @slack/web-api 7.13.0
+ @whiskeysockets/baileys 7.0.0-rc.9
+ ajv 8.17.1
+ chalk 5.6.2
+ chokidar 5.0.0
+ cli-highlight 2.1.11
+ commander 14.0.3
+ croner 10.0.1
+ discord-api-types 0.38.38
+ dotenv 17.2.4
+ express 5.2.1
+ file-type 21.3.0
+ grammy 1.39.3
+ hono 4.11.7
+ jiti 2.6.1
+ json5 2.2.3
+ jszip 3.10.1
+ linkedom 0.18.12
+ long 5.3.2
+ markdown-it 14.1.0
+ node-edge-tts 1.2.10
+ node-llama-cpp 3.15.1
+ osc-progress 0.3.0
+ pdfjs-dist 5.4.624
+ playwright-core 1.58.1
+ proper-lockfile 4.1.2
+ qrcode-terminal 0.12.0
+ sharp 0.34.5
+ signal-utils 0.21.1
+ sqlite-vec 0.1.7-alpha.2
+ tar 7.5.7
+ tslog 4.10.2
+ undici 7.20.0
+ ws 8.19.0
+ yaml 2.8.2
+ zod 4.3.6

devDependencies:
+ @grammyjs/types 3.23.0
+ @lit-labs/signals 0.2.0
+ @lit/context 1.1.6
+ @types/express 5.0.6
+ @types/markdown-it 14.1.2
+ @types/node 25.2.1
+ @types/proper-lockfile 4.1.4
+ @types/qrcode-terminal 0.12.2
+ @types/ws 8.18.1
+ @typescript/native-preview 7.0.0-dev.20260205.1
+ @vitest/coverage-v8 4.0.18
+ lit 3.3.2
+ ollama 0.6.3
+ oxfmt 0.28.0
+ oxlint 1.43.0
+ oxlint-tsgolint 0.11.4
+ rolldown 1.0.0-rc.3
+ tsdown 0.20.3
+ tsx 4.21.0
+ typescript 5.9.3
+ vitest 4.0.18

╭ Warning ───────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Ignored build scripts: core-js. │
│ Run “pnpm approve-builds” to pick which dependencies should be allowed to run scripts. │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────────╯

. prepare$ command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0
└─ Done in 46ms
Done in 17.9s using pnpm v10.23.0

> openclaw@2026.2.4 ui:build /home/mamu/openclaw
> node scripts/ui.js build

> openclaw-control-ui@ build /home/mamu/openclaw/ui
> vite build

vite v7.3.1 building client environment for production…
✓ 127 modules transformed.
../dist/control-ui/index.html 0.69 kB │ gzip: 0.37 kB
../dist/control-ui/assets/index-BoXosYY6.css 80.85 kB │ gzip: 13.95 kB
../dist/control-ui/assets/index-Dm6g1E26.js 538.46 kB │ gzip: 135.21 kB │ map: 1,475.17 kB

(!) Some chunks are larger than 500 kB after minification. Consider:
– Using dynamic import() to code-split the application
– Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
– Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 649ms

> openclaw@2026.2.4 build /home/mamu/openclaw
> pnpm canvas:a2ui:bundle && tsdown && node –import tsx scripts/canvas-a2ui-copy.ts && node –import tsx scripts/copy-hook-metadata.ts && node –import tsx scripts/write-build-info.ts && node –import tsx scripts/write-cli-compat.ts

> openclaw@2026.2.4 canvas:a2ui:bundle /home/mamu/openclaw
> bash scripts/bundle-a2ui.sh

/a2ui.bundle.js chunk │ size: 536.92 kB

✔ rolldown v1.0.0-rc.3 Finished in 35.80 ms
ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
ℹ config file: /home/mamu/openclaw/tsdown.config.ts
ℹ entry: src/entry.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/plugin-sdk/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/extensionAPI.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ Build start
ℹ Cleaning 10 files
ℹ Granting execute permission to dist/index.js
ℹ Granting execute permission to dist/entry.js
ℹ dist/extensionAPI.js 2365.36 kB
ℹ dist/pi-embedded-helpers-BxqZh6U7.js 299.64 kB │ gzip: 66.33 kB
ℹ dist/config-CG73z4h6.js 199.66 kB │ gzip: 39.73 kB
ℹ dist/manager-C4ILl-d3.js 105.84 kB │ gzip: 23.73 kB
ℹ dist/model-selection-mzTqrNoj.js 90.39 kB │ gzip: 20.16 kB
ℹ dist/deliver-CZPhTA7x.js 83.15 kB │ gzip: 20.83 kB
ℹ dist/chrome-B3IuUad-.js 62.08 kB │ gzip: 15.75 kB
ℹ dist/pw-ai-tNPuRNn3.js 54.74 kB │ gzip: 12.63 kB
ℹ dist/image-CgBndiQy.js 38.52 kB │ gzip: 10.07 kB
ℹ dist/exec-BMnoMcZW.js 35.83 kB │ gzip: 10.59 kB
ℹ dist/agent-scope-Csu2B6AM.js 22.38 kB │ gzip: 5.34 kB
ℹ dist/qmd-manager-CF52nuBg.js 20.70 kB │ gzip: 6.07 kB
ℹ dist/login-qr-CcOWO_dR.js 16.05 kB │ gzip: 5.23 kB
ℹ dist/sqlite-Dnmf3LS7.js 6.74 kB │ gzip: 2.28 kB
ℹ dist/paths-B1kfl4h5.js 6.06 kB │ gzip: 1.73 kB
ℹ dist/github-copilot-token-B3SA95yo.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/redact-BIMJ3ntQ.js 3.51 kB │ gzip: 1.40 kB
ℹ dist/paths-B4kigINg.js 2.06 kB │ gzip: 0.72 kB
ℹ dist/command-format-CFzL448l.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-JLH5W4He.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 22 files, total: 3420.47 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3628ms
ℹ dist/plugin-sdk/index.js 808.04 kB │ gzip: 176.48 kB
ℹ dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js 1.12 kB │ gzip: 0.52 kB
ℹ dist/plugin-sdk/index.d.ts 349.60 kB │ gzip: 66.43 kB
ℹ 3 files, total: 1158.76 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
– rolldown-plugin-dts:generate (73%)
– rolldown-plugin-dts:resolver (20%)
See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3769ms
ℹ dist/index.js 234.64 kB │ gzip: 52.22 kB
ℹ dist/reply-B8pOiUNN.js 2261.26 kB
ℹ dist/gateway-cli-ape0pnBU.js 630.50 kB │ gzip: 148.33 kB
ℹ dist/config-CAuZ-EkU.js 177.14 kB │ gzip: 34.51 kB
ℹ dist/onboarding-BP4-5uzE.js 122.07 kB │ gzip: 31.69 kB
ℹ dist/onboard-skills-s8J5xbUr.js 115.30 kB │ gzip: 24.92 kB
ℹ dist/sandbox-CV8VwPij.js 108.37 kB │ gzip: 24.24 kB
ℹ dist/manager-LpytrxUw.js 105.92 kB │ gzip: 23.75 kB
ℹ dist/doctor-CwSrWRCp.js 99.86 kB │ gzip: 25.40 kB
ℹ dist/model-selection-DMUrNhQP.js 99.62 kB │ gzip: 21.87 kB
ℹ dist/models-cli-EhrWjNLH.js 98.06 kB │ gzip: 22.17 kB
ℹ dist/deliver-C3bnXkg5.js 84.54 kB │ gzip: 21.11 kB
ℹ dist/tui-XH6_v0qC.js 84.07 kB │ gzip: 20.08 kB
ℹ dist/routes-DchZU3EK.js 78.94 kB │ gzip: 15.60 kB
ℹ dist/audit-ZY6Dk5Ec.js 74.57 kB │ gzip: 18.25 kB
ℹ dist/client-BYVbRnuQ.js 66.50 kB │ gzip: 11.96 kB
ℹ dist/chrome-BNSd7Bie.js 63.21 kB │ gzip: 16.15 kB
ℹ dist/channels-cli-PPk5wwuy.js 55.53 kB │ gzip: 14.03 kB
ℹ dist/pw-ai-DYpQO6HI.js 54.80 kB │ gzip: 12.66 kB
ℹ dist/health-format-B3eStY5r.js 53.19 kB │ gzip: 12.93 kB
ℹ dist/nodes-cli-Bc5K-0Lt.js 51.83 kB │ gzip: 11.22 kB
ℹ dist/node-cli-2oYmIWJt.js 48.81 kB │ gzip: 12.35 kB
ℹ dist/pi-embedded-helpers-BB4uACeq.js 44.89 kB │ gzip: 11.86 kB
ℹ dist/update-runner-BDdk_K2S.js 42.52 kB │ gzip: 9.38 kB
ℹ dist/update-cli-OAcZiYuA.js 38.86 kB │ gzip: 10.89 kB
ℹ dist/github-copilot-auth-C8Uf0Q03.js 38.55 kB │ gzip: 7.64 kB
ℹ dist/channel-summary-DUiKDBLv.js 36.52 kB │ gzip: 8.49 kB
ℹ dist/hooks-cli-BMu_-4Ru.js 35.59 kB │ gzip: 8.17 kB
ℹ dist/configure-B47GYdlB.js 29.91 kB │ gzip: 7.83 kB
ℹ dist/daemon-cli-B6aLZ8OE.js 29.83 kB │ gzip: 7.13 kB
ℹ dist/exec-approvals-DZixgolZ.js 29.48 kB │ gzip: 6.88 kB
ℹ dist/acp-cli-BwcHtBDk.js 28.84 kB │ gzip: 7.87 kB
ℹ dist/agent-_H-0rbHV.js 28.77 kB │ gzip: 7.21 kB
ℹ dist/subsystem-CAq3uyo7.js 28.12 kB │ gzip: 8.09 kB
ℹ dist/server-context-vChIAqjH.js 27.81 kB │ gzip: 7.25 kB
ℹ dist/skills-D5JDj3TR.js 26.80 kB │ gzip: 6.94 kB
ℹ dist/completion-cli-BPIeQDFy.js 26.79 kB │ gzip: 6.87 kB
ℹ dist/session-cost-usage-CBP4Hv9D.js 25.33 kB │ gzip: 5.95 kB
ℹ dist/cron-cli-Ys53MyTg.js 23.67 kB │ gzip: 5.84 kB
ℹ dist/service-BZesBIaG.js 23.23 kB │ gzip: 5.57 kB
ℹ dist/onboard-channels-DKT27PdN.js 22.93 kB │ gzip: 5.86 kB
ℹ dist/image-Ca_PtqY7.js 22.26 kB │ gzip: 6.53 kB
ℹ dist/sandbox-cli-C0_Hrk7i.js 21.88 kB │ gzip: 5.66 kB
ℹ dist/qmd-manager-BKkFEEN_.js 20.81 kB │ gzip: 6.12 kB
ℹ dist/manifest-registry-DHaa1SJb.js 20.25 kB │ gzip: 5.07 kB
ℹ dist/service-audit-C-IA4omi.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-DMd0mgTK.js 18.24 kB │ gzip: 5.12 kB
ℹ dist/plugins-BYIWo0Cp.js 17.98 kB │ gzip: 3.96 kB
ℹ dist/plugin-auto-enable-Ci7TBlH2.js 16.67 kB │ gzip: 4.32 kB
ℹ dist/tool-display-BxZG0o1b.js 16.39 kB │ gzip: 3.82 kB
ℹ dist/security-cli-CybLT9XS.js 16.29 kB │ gzip: 4.68 kB
ℹ dist/plugins-cli-CGfxctIx.js 16.24 kB │ gzip: 4.48 kB
ℹ dist/login-qr-BIlr0vwe.js 16.17 kB │ gzip: 5.28 kB
ℹ dist/hooks-status-DepPyfBb.js 16.07 kB │ gzip: 4.24 kB
ℹ dist/gmail-setup-utils-QpN7TEXS.js 15.38 kB │ gzip: 4.47 kB
ℹ dist/webhooks-cli-ZAn97osC.js 14.57 kB │ gzip: 4.00 kB
ℹ dist/systemd-B-3NdMmA.js 14.35 kB │ gzip: 4.14 kB
ℹ dist/installs-BhEjOqPy.js 14.05 kB │ gzip: 3.50 kB
ℹ dist/exec-approvals-cli-DzLp5G7t.js 14.05 kB │ gzip: 3.54 kB
ℹ dist/agent-scope-CMs5Y7l-.js 13.38 kB │ gzip: 3.56 kB
ℹ dist/pairing-store-DFq7WtOv.js 11.95 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-C1yJvIkL.js 11.94 kB │ gzip: 2.98 kB
ℹ dist/ws-log-B7UNLFLC.js 11.83 kB │ gzip: 2.87 kB
ℹ dist/call-BTbA5OB4.js 11.01 kB │ gzip: 3.31 kB
ℹ dist/tailscale-BVGD9gSD.js 9.01 kB │ gzip: 2.82 kB
ℹ dist/accounts-BgZmhIm6.js 8.89 kB │ gzip: 2.60 kB
ℹ dist/pi-tools.policy-BQ8N5y8a.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-DzMcwy1G.js 8.71 kB │ gzip: 2.19 kB
ℹ dist/table-CLtGjVsx.js 8.48 kB │ gzip: 2.76 kB
ℹ dist/logs-cli-5L3NxTsc.js 8.33 kB │ gzip: 2.81 kB
ℹ dist/directory-cli-CTtv_AB7.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/server-node-events-D39FA0NG.js 7.80 kB │ gzip: 2.24 kB
ℹ dist/dns-cli-BRkJGLqK.js 7.79 kB │ gzip: 2.90 kB
ℹ dist/skill-scanner-BoGjHXUZ.js 7.68 kB │ gzip: 2.56 kB
ℹ dist/session-key-Dm2EOhrH.js 7.39 kB │ gzip: 1.80 kB
ℹ dist/skills-status-CEvVUD3U.js 7.29 kB │ gzip: 2.28 kB
ℹ dist/devices-cli-Cm0ENrXH.js 7.27 kB │ gzip: 2.20 kB
ℹ dist/exec-HEWTMJ7j.js 7.16 kB │ gzip: 2.39 kB
ℹ dist/utils-CKSrBNwq.js 6.83 kB │ gzip: 2.56 kB
ℹ dist/paths-scjhy7N2.js 6.83 kB │ gzip: 1.95 kB
ℹ dist/sqlite-BKl1HJFe.js 6.74 kB │ gzip: 2.28 kB
ℹ dist/auth-CbhB03Rz.js 6.35 kB │ gzip: 1.80 kB
ℹ dist/shared-BmtNKsPq.js 5.69 kB │ gzip: 2.04 kB
ℹ dist/docs-cli-Bh1Coji2.js 5.55 kB │ gzip: 2.02 kB
ℹ dist/pairing-cli-i7wiTmYC.js 5.19 kB │ gzip: 1.93 kB
ℹ dist/widearea-dns-D9Al4QRv.js 5.04 kB │ gzip: 1.93 kB
ℹ dist/nodes-screen-DT5HvhJV.js 4.96 kB │ gzip: 1.32 kB
ℹ dist/auth-health-Ctf-_JFE.js 4.94 kB │ gzip: 1.51 kB
ℹ dist/net-C8YRVt16.js 4.39 kB │ gzip: 1.49 kB
ℹ dist/message-channel-Bpfe5l5f.js 4.30 kB │ gzip: 1.28 kB
ℹ dist/progress-xpLtQsNY.js 4.16 kB │ gzip: 1.38 kB
ℹ dist/rpc-Vo2ACfn-.js 4.12 kB │ gzip: 1.74 kB
ℹ dist/github-copilot-token-pGSmVaW-.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/dispatcher-6oI-H42S.js 3.93 kB │ gzip: 1.58 kB
ℹ dist/system-cli-SJLtqI47.js 3.90 kB │ gzip: 1.20 kB
ℹ dist/redact-DJCFY628.js 3.62 kB │ gzip: 1.43 kB
ℹ dist/shared-C8_5pNbb.js 3.21 kB │ gzip: 1.16 kB
ℹ dist/systemd-linger-N-cIaegf.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/cli-DD5dW58-.js 3.09 kB │ gzip: 1.32 kB
ℹ dist/archive-Dy3Ezb-5.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/constants-HPrOsATF.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-DP3DsVge.js 2.83 kB │ gzip: 1.11 kB
ℹ dist/tui-cli-DRSIBDgZ.js 2.81 kB │ gzip: 1.31 kB
ℹ dist/openclaw-root-Cvotktkd.js 2.80 kB │ gzip: 0.80 kB
ℹ dist/clack-prompter-CEKDd_Vg.js 2.61 kB │ gzip: 0.86 kB
ℹ dist/note-B5HnoeZX.js 2.46 kB │ gzip: 0.91 kB
ℹ dist/control-service-CS61Road.js 2.44 kB │ gzip: 0.95 kB
ℹ dist/paths-Bb0nwPeu.js 2.25 kB │ gzip: 0.73 kB
ℹ dist/channel-options-uftAnT5P.js 2.24 kB │ gzip: 0.92 kB
ℹ dist/node-service-BAYHx0E7.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-CJWYmCLf.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/command-format-ChfKqObn.js 1.95 kB │ gzip: 0.74 kB
ℹ dist/brew-CAcErcKz.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/usage-format-DvowRSs-.js 1.50 kB │ gzip: 0.58 kB
ℹ dist/format-B7OjpGnt.js 1.28 kB │ gzip: 0.61 kB
ℹ dist/parse-log-line-CARp5QyJ.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/env-0_mKbEWW.js 1.21 kB │ gzip: 0.58 kB
ℹ dist/tailnet-DLDGNuH2.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/gateway-rpc-C8rNIC0P.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-DO88c_nD.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-B6kCyqsv.js 1.00 kB │ gzip: 0.40 kB
ℹ dist/cli-utils-BkRQdAoC.js 0.98 kB │ gzip: 0.47 kB
ℹ dist/status-DBZ5Z7ng.js 0.97 kB │ gzip: 0.44 kB
ℹ dist/boolean-BgXe2hyu.js 0.86 kB │ gzip: 0.38 kB
ℹ dist/pi-model-discovery-CV2V1HHz.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-tCu4RWZH.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-BG1LonF6.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-5yebzF4C.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/parse-BZz5lHzQ.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-Bozi4K9H.js 0.67 kB │ gzip: 0.30 kB
ℹ dist/transcript-events-ChU6IQwp.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-CrS1r5sr.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/logging-TXWhN8jG.js 0.50 kB │ gzip: 0.30 kB
ℹ dist/links-B5pRdmo1.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/ws-CEcdsnN9.js 0.47 kB │ gzip: 0.24 kB
ℹ dist/parse-timeout-Du-wHHNi.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-vzh0MGHs.js 0.45 kB │ gzip: 0.25 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-BIc7L8EF.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pairing-labels-CtqLxbG6.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-FbZThK8w.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-BWRYHvLp.js 0.01 kB │ gzip: 0.03 kB
ℹ 142 files, total: 5996.16 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3789ms
ℹ dist/entry.js 44.79 kB │ gzip: 12.54 kB
ℹ dist/loader-_Pj-TZS2.js 2261.10 kB
ℹ dist/gateway-cli-DHP5DRUH.js 630.46 kB │ gzip: 148.31 kB
ℹ dist/config-guard-a5ynrKd-.js 226.47 kB │ gzip: 49.25 kB
ℹ dist/config-CKLedg5Y.js 177.09 kB │ gzip: 34.50 kB
ℹ dist/status-BRXuHUsK.js 119.01 kB │ gzip: 30.75 kB
ℹ dist/onboard-skills-YobctE-R.js 115.29 kB │ gzip: 25.01 kB
ℹ dist/sandbox-DuqLKN5J.js 108.29 kB │ gzip: 24.08 kB
ℹ dist/manager-BXiIQku7.js 105.83 kB │ gzip: 23.72 kB
ℹ dist/doctor-JnMryC_M.js 99.75 kB │ gzip: 25.38 kB
ℹ dist/auth-profiles-CYBuGiBb.js 99.53 kB │ gzip: 22.16 kB
ℹ dist/models-cli-DHzyyLvp.js 97.93 kB │ gzip: 22.11 kB
ℹ dist/deliver-Cau4HL7W.js 84.53 kB │ gzip: 21.11 kB
ℹ dist/tui-DPorsF4z.js 84.02 kB │ gzip: 20.06 kB
ℹ dist/routes-BSfXf8a5.js 78.93 kB │ gzip: 15.64 kB
ℹ dist/audit-BWbjQmyv.js 74.55 kB │ gzip: 18.24 kB
ℹ dist/client-CxbkcEZ7.js 66.49 kB │ gzip: 11.96 kB
ℹ dist/errors-CZ9opC6L.js 62.00 kB │ gzip: 15.75 kB
ℹ dist/channels-cli-PAlqhOZ7.js 55.46 kB │ gzip: 13.99 kB
ℹ dist/pw-ai-B7Fvw8DW.js 54.74 kB │ gzip: 12.64 kB
ℹ dist/health-format-ND2rUbQO.js 53.14 kB │ gzip: 12.92 kB
ℹ dist/nodes-cli-hT8yYD7S.js 51.73 kB │ gzip: 11.18 kB
ℹ dist/node-cli-DH7Ykym5.js 48.70 kB │ gzip: 12.30 kB
ℹ dist/pi-embedded-helpers-DF8SAHU-.js 44.88 kB │ gzip: 11.80 kB
ℹ dist/update-runner-2i8_mIG5.js 42.52 kB │ gzip: 9.39 kB
ℹ dist/update-cli-tQcy8mkI.js 38.79 kB │ gzip: 10.87 kB
ℹ dist/github-copilot-auth-B_lK1g__.js 38.53 kB │ gzip: 7.62 kB
ℹ dist/channel-summary-D9nzC5WB.js 36.51 kB │ gzip: 8.49 kB
ℹ dist/hooks-cli-CmeQxEOM.js 35.47 kB │ gzip: 8.13 kB
ℹ dist/configure-ChnTy7Jz.js 29.85 kB │ gzip: 7.80 kB
ℹ dist/daemon-cli-CMKd_D6h.js 29.78 kB │ gzip: 7.11 kB
ℹ dist/exec-approvals-BCEFzcbC.js 29.48 kB │ gzip: 6.88 kB
ℹ dist/agent-DztWhVCH.js 28.75 kB │ gzip: 7.23 kB
ℹ dist/acp-cli-BOKabdeW.js 28.73 kB │ gzip: 7.82 kB
ℹ dist/server-context-yKyxyxOJ.js 27.80 kB │ gzip: 7.23 kB
ℹ dist/skills-CmU0Q92f.js 26.75 kB │ gzip: 6.92 kB
ℹ dist/session-cost-usage-BTXosU1k.js 25.33 kB │ gzip: 5.95 kB
ℹ dist/cron-cli-CssI71-c.js 23.56 kB │ gzip: 5.79 kB
ℹ dist/service-_JwSmGSn.js 23.22 kB │ gzip: 5.55 kB
ℹ dist/onboard-channels-D-ZQTy5V.js 22.92 kB │ gzip: 5.85 kB
ℹ dist/image-nRwqkmtf.js 22.26 kB │ gzip: 6.53 kB
ℹ dist/sandbox-cli-Ces6i3n2.js 21.77 kB │ gzip: 5.62 kB
ℹ dist/qmd-manager-Dub8jfbo.js 20.76 kB │ gzip: 6.10 kB
ℹ dist/manifest-registry-C69Z-I4v.js 20.25 kB │ gzip: 5.07 kB
ℹ dist/service-audit-DDX1kO3k.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-BCn_QIHK.js 18.23 kB │ gzip: 5.09 kB
ℹ dist/plugins-BUPpq5aS.js 17.93 kB │ gzip: 3.93 kB
ℹ dist/completion-cli-BbhA_JbG.js 16.66 kB │ gzip: 4.44 kB
ℹ dist/plugin-auto-enable-DyW8lHTT.js 16.66 kB │ gzip: 4.31 kB
ℹ dist/tool-display-DmgKs6-V.js 16.39 kB │ gzip: 3.82 kB
ℹ dist/security-cli-T7yrd3lb.js 16.17 kB │ gzip: 4.62 kB
ℹ dist/login-qr-Cmsf7BGt.js 16.16 kB │ gzip: 5.26 kB
ℹ dist/plugins-cli-Dr_R2-FY.js 16.13 kB │ gzip: 4.42 kB
ℹ dist/hooks-status-CKmUPU-M.js 16.06 kB │ gzip: 4.24 kB
ℹ dist/gmail-setup-utils-Bi6W14MK.js 15.37 kB │ gzip: 4.47 kB
ℹ dist/webhooks-cli-BztQHEco.js 14.46 kB │ gzip: 3.95 kB
ℹ dist/systemd-8sIc6isV.js 14.34 kB │ gzip: 4.12 kB
ℹ dist/installs-DsJkyWfL.js 14.05 kB │ gzip: 3.50 kB
ℹ dist/exec-approvals-cli-D7aVv5hN.js 13.95 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-C9VjJXEK.js 13.37 kB │ gzip: 3.55 kB
ℹ dist/pairing-store-DTfv_FGA.js 11.94 kB │ gzip: 3.12 kB
ℹ dist/skills-cli-DBC5zFat.js 11.83 kB │ gzip: 2.93 kB
ℹ dist/ws-log-DJIXahf0.js 11.82 kB │ gzip: 2.86 kB
ℹ dist/call-90HgQQ8o.js 11.00 kB │ gzip: 3.30 kB
ℹ dist/register.subclis-BpIR6Iqi.js 10.61 kB │ gzip: 2.89 kB
ℹ dist/accounts-Dto4p9zB.js 8.84 kB │ gzip: 2.57 kB
ℹ dist/commands-DAC7XMAT.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-DNAVcIQ7.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-CJSx0YID.js 8.47 kB │ gzip: 2.75 kB
ℹ dist/logs-cli-DtiFFkZL.js 8.22 kB │ gzip: 2.77 kB
ℹ dist/program-oR55MCAT.js 8.14 kB │ gzip: 3.26 kB
ℹ dist/tailscale-9MusRvOi.js 8.09 kB │ gzip: 2.48 kB
ℹ dist/directory-cli-CGLolzJC.js 7.79 kB │ gzip: 1.87 kB
ℹ dist/server-node-events-BR2vHqf6.js 7.68 kB │ gzip: 2.20 kB
ℹ dist/dns-cli-CoeI4817.js 7.68 kB │ gzip: 2.85 kB
ℹ dist/skill-scanner-Bp1D9gra.js 7.68 kB │ gzip: 2.56 kB
ℹ dist/session-key-CZkcvAtx.js 7.39 kB │ gzip: 1.80 kB
ℹ dist/skills-status-DtXrj3fy.js 7.28 kB │ gzip: 2.27 kB
ℹ dist/run-main-DrVUUPHV.js 7.25 kB │ gzip: 2.83 kB
ℹ dist/devices-cli-D_rnGkqO.js 7.17 kB │ gzip: 2.15 kB
ℹ dist/exec-B8JKbXKW.js 7.15 kB │ gzip: 2.38 kB
ℹ dist/utils-DX85MiPR.js 6.65 kB │ gzip: 2.47 kB
ℹ dist/auth-DksjO6WG.js 6.35 kB │ gzip: 1.80 kB
ℹ dist/sqlite-DqUEZnjO.js 6.00 kB │ gzip: 2.03 kB
ℹ dist/shared-fnGLWyZ6.js 5.68 kB │ gzip: 2.03 kB
ℹ dist/docs-cli-BH9bMx3a.js 5.47 kB │ gzip: 1.98 kB
ℹ dist/pairing-cli-C8KHRjaU.js 5.09 kB │ gzip: 1.88 kB
ℹ dist/widearea-dns-CsSylzXH.js 5.04 kB │ gzip: 1.93 kB
ℹ dist/nodes-screen-DGlNPbk4.js 4.96 kB │ gzip: 1.32 kB
ℹ dist/auth-health-C4bElkgf.js 4.93 kB │ gzip: 1.50 kB
ℹ dist/net-CWMMy37F.js 4.39 kB │ gzip: 1.49 kB
ℹ dist/message-channel-BlgPSDAh.js 4.29 kB │ gzip: 1.27 kB
ℹ dist/progress-Da1ehW-x.js 4.14 kB │ gzip: 1.37 kB
ℹ dist/rpc-DqI3QH59.js 4.12 kB │ gzip: 1.74 kB
ℹ dist/github-copilot-token-SLWintYd.js 3.96 kB │ gzip: 1.54 kB
ℹ dist/wsl-ATjkMwMA.js 3.93 kB │ gzip: 1.59 kB
ℹ dist/system-cli-Dqnt-b0D.js 3.79 kB │ gzip: 1.15 kB
ℹ dist/redact-B8YiFlwn.js 3.62 kB │ gzip: 1.43 kB
ℹ dist/shared-C1XLEyB0.js 3.20 kB │ gzip: 1.15 kB
ℹ dist/systemd-linger-SsSOsJST.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/ports-0V-Mu4ch.js 3.14 kB │ gzip: 1.12 kB
ℹ dist/archive-D0z3LZDK.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/cli-DBAccB3n.js 2.97 kB │ gzip: 1.27 kB
ℹ dist/constants-D1op9uGI.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-h3xp5PqO.js 2.83 kB │ gzip: 1.10 kB
ℹ dist/openclaw-root-9ILYSmJ9.js 2.80 kB │ gzip: 0.80 kB
ℹ dist/tui-cli-DV_JAtnq.js 2.71 kB │ gzip: 1.26 kB
ℹ dist/clack-prompter-DuBVnTKy.js 2.60 kB │ gzip: 0.84 kB
ℹ dist/note-Ci08TSbV.js 2.45 kB │ gzip: 0.90 kB
ℹ dist/control-service-D2E9NKqQ.js 2.42 kB │ gzip: 0.95 kB
ℹ dist/paths-CTg8F3AE.js 2.24 kB │ gzip: 0.72 kB
ℹ dist/node-service-Lc1LlnFH.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-PZuuCvrp.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/brew-CcZV0dSS.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/command-format-ayFsmwwz.js 1.58 kB │ gzip: 0.64 kB
ℹ dist/usage-format-E3bMcUMV.js 1.50 kB │ gzip: 0.58 kB
ℹ dist/format-CS7EI0xF.js 1.28 kB │ gzip: 0.61 kB
ℹ dist/parse-log-line-C6szvNBZ.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/tailnet-Byp3obcc.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/channel-options-DrUmtdd9.js 1.18 kB │ gzip: 0.56 kB
ℹ dist/gateway-rpc-CWnTaSEY.js 1.17 kB │ gzip: 0.63 kB
ℹ dist/command-options-DUUINcz0.js 1.13 kB │ gzip: 0.51 kB
ℹ dist/systemd-hints-Wim4Bq6j.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-qJ675wPV.js 1.00 kB │ gzip: 0.40 kB
ℹ dist/cli-utils-ByANh4Sp.js 0.98 kB │ gzip: 0.47 kB
ℹ dist/status-BTGXSvZ1.js 0.96 kB │ gzip: 0.43 kB
ℹ dist/pi-model-discovery-DzEIEgHL.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-CRIEi8Mc.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-ytXmI88x.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-EKm3X92T.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/parse-gTOGQPH6.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-CfZ94KRN.js 0.66 kB │ gzip: 0.28 kB
ℹ dist/transcript-events-CZ8CG4ht.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-CJ8PJgDc.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/links-D0uzJbi6.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/logging-Cc7m6PTv.js 0.49 kB │ gzip: 0.29 kB
ℹ dist/ws-D091yo4M.js 0.47 kB │ gzip: 0.24 kB
ℹ dist/parse-timeout-CbVKLZ4B.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-Dc0C5HC9.js 0.44 kB │ gzip: 0.23 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-D66_XoIz.js 0.41 kB │ gzip: 0.25 kB
ℹ dist/pairing-labels-BbydDT7w.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-CXLLIBwP.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-CfEk_PnX.js 0.01 kB │ gzip: 0.03 kB
ℹ 144 files, total: 6004.27 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3791ms
[copy-hook-metadata] Copied boot-md/HOOK.md
[copy-hook-metadata] Copied command-logger/HOOK.md
[copy-hook-metadata] Copied session-memory/HOOK.md
[copy-hook-metadata] Copied soul-evil/HOOK.md
[copy-hook-metadata] Done

いま出てる「警告」の意味(要点だけ)

1) Update available! 10.23.0 → 10.28.2

pnpmの更新案内。今は無視でOK(動いてるなら触らないが正義)。
気になるなら後でこれ:

corepack use pnpm@10.28.2
pnpm -v

2) Tarball download average speed ... below 50 KiB/s

ただの「遅かった」警告。失敗してないのでOK。

3) Ignored build scripts: core-js / pnpm approve-builds

これが一番大事。

  • pnpmは最近、依存パッケージの postinstall / build script を安全のためデフォルト拒否しがち
  • 今回は core-js のスクリプトが無視された、という意味
  • 多くの場合、core-js は無視されても実害なし(ただ、プロジェクトによっては後でテストや一部機能でコケることがある)

安全寄りにちゃんと進めるなら、次を一回実行して「許可するものだけ」選べばOK:

pnpm approve-builds

(ここで core-js が出たら、基本は許可して問題ないことが多い。が、慎重派なら「動かなくなったら許可」でもOK)

次にやること(ここからが本番)

ビルド済みだから、次は onboard → daemon(gateway) 起動

pnpm openclaw onboard --install-daemon
pnpm openclaw gateway status
pnpm openclaw dashboard

mamu@evo-x2:~/openclaw$ pnpm openclaw onboard –install-daemon
pnpm openclaw gateway status
pnpm openclaw dashboard

> openclaw@2026.2.4 openclaw /home/mamu/openclaw
> node scripts/run-node.mjs onboard –install-daemon

[openclaw] Building TypeScript (dist is stale).
ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
ℹ config file: /home/mamu/openclaw/tsdown.config.ts
ℹ entry: src/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/entry.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/extensionAPI.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ entry: src/plugin-sdk/index.ts
ℹ target: node22.12.0
ℹ tsconfig: tsconfig.json
ℹ Build start
ℹ Granting execute permission to dist/entry.js
ℹ Granting execute permission to dist/index.js
ℹ dist/extensionAPI.js 2365.36 kB
ℹ dist/pi-embedded-helpers-BxqZh6U7.js 299.64 kB │ gzip: 66.33 kB
ℹ dist/config-CG73z4h6.js 199.66 kB │ gzip: 39.73 kB
ℹ dist/manager-C4ILl-d3.js 105.84 kB │ gzip: 23.73 kB
ℹ dist/model-selection-mzTqrNoj.js 90.39 kB │ gzip: 20.16 kB
ℹ dist/deliver-CZPhTA7x.js 83.15 kB │ gzip: 20.83 kB
ℹ dist/chrome-B3IuUad-.js 62.08 kB │ gzip: 15.75 kB
ℹ dist/pw-ai-tNPuRNn3.js 54.74 kB │ gzip: 12.63 kB
ℹ dist/image-CgBndiQy.js 38.52 kB │ gzip: 10.07 kB
ℹ dist/exec-BMnoMcZW.js 35.83 kB │ gzip: 10.59 kB
ℹ dist/agent-scope-Csu2B6AM.js 22.38 kB │ gzip: 5.34 kB
ℹ dist/qmd-manager-CF52nuBg.js 20.70 kB │ gzip: 6.07 kB
ℹ dist/login-qr-CcOWO_dR.js 16.05 kB │ gzip: 5.23 kB
ℹ dist/sqlite-Dnmf3LS7.js 6.74 kB │ gzip: 2.28 kB
ℹ dist/paths-B1kfl4h5.js 6.06 kB │ gzip: 1.73 kB
ℹ dist/github-copilot-token-B3SA95yo.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/redact-BIMJ3ntQ.js 3.51 kB │ gzip: 1.40 kB
ℹ dist/paths-B4kigINg.js 2.06 kB │ gzip: 0.72 kB
ℹ dist/command-format-CFzL448l.js 1.93 kB │ gzip: 0.74 kB
ℹ dist/pi-model-discovery-EhM2JAQo.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/transcript-events-JLH5W4He.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ 22 files, total: 3420.47 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3505ms
ℹ dist/plugin-sdk/index.js 808.04 kB │ gzip: 176.48 kB
ℹ dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js 1.12 kB │ gzip: 0.52 kB
ℹ dist/plugin-sdk/index.d.ts 349.60 kB │ gzip: 66.44 kB
ℹ 3 files, total: 1158.76 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
– rolldown-plugin-dts:generate (74%)
– rolldown-plugin-dts:resolver (19%)
See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3640ms
ℹ dist/index.js 234.64 kB │ gzip: 52.22 kB
ℹ dist/reply-B8pOiUNN.js 2261.26 kB
ℹ dist/gateway-cli-ape0pnBU.js 630.50 kB │ gzip: 148.33 kB
ℹ dist/config-CAuZ-EkU.js 177.14 kB │ gzip: 34.51 kB
ℹ dist/onboarding-BP4-5uzE.js 122.07 kB │ gzip: 31.69 kB
ℹ dist/onboard-skills-s8J5xbUr.js 115.30 kB │ gzip: 24.92 kB
ℹ dist/sandbox-CV8VwPij.js 108.37 kB │ gzip: 24.24 kB
ℹ dist/manager-LpytrxUw.js 105.92 kB │ gzip: 23.75 kB
ℹ dist/doctor-CwSrWRCp.js 99.86 kB │ gzip: 25.40 kB
ℹ dist/model-selection-DMUrNhQP.js 99.62 kB │ gzip: 21.87 kB
ℹ dist/models-cli-EhrWjNLH.js 98.06 kB │ gzip: 22.17 kB
ℹ dist/deliver-C3bnXkg5.js 84.54 kB │ gzip: 21.11 kB
ℹ dist/tui-XH6_v0qC.js 84.07 kB │ gzip: 20.08 kB
ℹ dist/routes-DchZU3EK.js 78.94 kB │ gzip: 15.60 kB
ℹ dist/audit-ZY6Dk5Ec.js 74.57 kB │ gzip: 18.25 kB
ℹ dist/client-BYVbRnuQ.js 66.50 kB │ gzip: 11.96 kB
ℹ dist/chrome-BNSd7Bie.js 63.21 kB │ gzip: 16.15 kB
ℹ dist/channels-cli-PPk5wwuy.js 55.53 kB │ gzip: 14.03 kB
ℹ dist/pw-ai-DYpQO6HI.js 54.80 kB │ gzip: 12.66 kB
ℹ dist/health-format-B3eStY5r.js 53.19 kB │ gzip: 12.93 kB
ℹ dist/nodes-cli-Bc5K-0Lt.js 51.83 kB │ gzip: 11.22 kB
ℹ dist/node-cli-2oYmIWJt.js 48.81 kB │ gzip: 12.35 kB
ℹ dist/pi-embedded-helpers-BB4uACeq.js 44.89 kB │ gzip: 11.86 kB
ℹ dist/update-runner-BDdk_K2S.js 42.52 kB │ gzip: 9.38 kB
ℹ dist/update-cli-OAcZiYuA.js 38.86 kB │ gzip: 10.89 kB
ℹ dist/github-copilot-auth-C8Uf0Q03.js 38.55 kB │ gzip: 7.64 kB
ℹ dist/channel-summary-DUiKDBLv.js 36.52 kB │ gzip: 8.49 kB
ℹ dist/hooks-cli-BMu_-4Ru.js 35.59 kB │ gzip: 8.17 kB
ℹ dist/configure-B47GYdlB.js 29.91 kB │ gzip: 7.83 kB
ℹ dist/daemon-cli-B6aLZ8OE.js 29.83 kB │ gzip: 7.13 kB
ℹ dist/exec-approvals-DZixgolZ.js 29.48 kB │ gzip: 6.88 kB
ℹ dist/acp-cli-BwcHtBDk.js 28.84 kB │ gzip: 7.87 kB
ℹ dist/agent-_H-0rbHV.js 28.77 kB │ gzip: 7.21 kB
ℹ dist/subsystem-CAq3uyo7.js 28.12 kB │ gzip: 8.09 kB
ℹ dist/server-context-vChIAqjH.js 27.81 kB │ gzip: 7.25 kB
ℹ dist/skills-D5JDj3TR.js 26.80 kB │ gzip: 6.94 kB
ℹ dist/completion-cli-BPIeQDFy.js 26.79 kB │ gzip: 6.87 kB
ℹ dist/session-cost-usage-CBP4Hv9D.js 25.33 kB │ gzip: 5.95 kB
ℹ dist/cron-cli-Ys53MyTg.js 23.67 kB │ gzip: 5.84 kB
ℹ dist/service-BZesBIaG.js 23.23 kB │ gzip: 5.57 kB
ℹ dist/onboard-channels-DKT27PdN.js 22.93 kB │ gzip: 5.86 kB
ℹ dist/image-Ca_PtqY7.js 22.26 kB │ gzip: 6.53 kB
ℹ dist/sandbox-cli-C0_Hrk7i.js 21.88 kB │ gzip: 5.66 kB
ℹ dist/qmd-manager-BKkFEEN_.js 20.81 kB │ gzip: 6.12 kB
ℹ dist/manifest-registry-DHaa1SJb.js 20.25 kB │ gzip: 5.07 kB
ℹ dist/service-audit-C-IA4omi.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-DMd0mgTK.js 18.24 kB │ gzip: 5.12 kB
ℹ dist/plugins-BYIWo0Cp.js 17.98 kB │ gzip: 3.96 kB
ℹ dist/plugin-auto-enable-Ci7TBlH2.js 16.67 kB │ gzip: 4.32 kB
ℹ dist/tool-display-BxZG0o1b.js 16.39 kB │ gzip: 3.82 kB
ℹ dist/security-cli-CybLT9XS.js 16.29 kB │ gzip: 4.68 kB
ℹ dist/plugins-cli-CGfxctIx.js 16.24 kB │ gzip: 4.48 kB
ℹ dist/login-qr-BIlr0vwe.js 16.17 kB │ gzip: 5.28 kB
ℹ dist/hooks-status-DepPyfBb.js 16.07 kB │ gzip: 4.24 kB
ℹ dist/gmail-setup-utils-QpN7TEXS.js 15.38 kB │ gzip: 4.47 kB
ℹ dist/webhooks-cli-ZAn97osC.js 14.57 kB │ gzip: 4.00 kB
ℹ dist/systemd-B-3NdMmA.js 14.35 kB │ gzip: 4.14 kB
ℹ dist/installs-BhEjOqPy.js 14.05 kB │ gzip: 3.50 kB
ℹ dist/exec-approvals-cli-DzLp5G7t.js 14.05 kB │ gzip: 3.54 kB
ℹ dist/agent-scope-CMs5Y7l-.js 13.38 kB │ gzip: 3.56 kB
ℹ dist/pairing-store-DFq7WtOv.js 11.95 kB │ gzip: 3.13 kB
ℹ dist/skills-cli-C1yJvIkL.js 11.94 kB │ gzip: 2.98 kB
ℹ dist/ws-log-B7UNLFLC.js 11.83 kB │ gzip: 2.87 kB
ℹ dist/call-BTbA5OB4.js 11.01 kB │ gzip: 3.31 kB
ℹ dist/tailscale-BVGD9gSD.js 9.01 kB │ gzip: 2.82 kB
ℹ dist/accounts-BgZmhIm6.js 8.89 kB │ gzip: 2.60 kB
ℹ dist/pi-tools.policy-BQ8N5y8a.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-DzMcwy1G.js 8.71 kB │ gzip: 2.19 kB
ℹ dist/table-CLtGjVsx.js 8.48 kB │ gzip: 2.76 kB
ℹ dist/logs-cli-5L3NxTsc.js 8.33 kB │ gzip: 2.81 kB
ℹ dist/directory-cli-CTtv_AB7.js 7.90 kB │ gzip: 1.92 kB
ℹ dist/server-node-events-D39FA0NG.js 7.80 kB │ gzip: 2.24 kB
ℹ dist/dns-cli-BRkJGLqK.js 7.79 kB │ gzip: 2.90 kB
ℹ dist/skill-scanner-BoGjHXUZ.js 7.68 kB │ gzip: 2.56 kB
ℹ dist/session-key-Dm2EOhrH.js 7.39 kB │ gzip: 1.80 kB
ℹ dist/skills-status-CEvVUD3U.js 7.29 kB │ gzip: 2.28 kB
ℹ dist/devices-cli-Cm0ENrXH.js 7.27 kB │ gzip: 2.20 kB
ℹ dist/exec-HEWTMJ7j.js 7.16 kB │ gzip: 2.39 kB
ℹ dist/utils-CKSrBNwq.js 6.83 kB │ gzip: 2.56 kB
ℹ dist/paths-scjhy7N2.js 6.83 kB │ gzip: 1.95 kB
ℹ dist/sqlite-BKl1HJFe.js 6.74 kB │ gzip: 2.28 kB
ℹ dist/auth-CbhB03Rz.js 6.35 kB │ gzip: 1.80 kB
ℹ dist/shared-BmtNKsPq.js 5.69 kB │ gzip: 2.04 kB
ℹ dist/docs-cli-Bh1Coji2.js 5.55 kB │ gzip: 2.02 kB
ℹ dist/pairing-cli-i7wiTmYC.js 5.19 kB │ gzip: 1.93 kB
ℹ dist/widearea-dns-D9Al4QRv.js 5.04 kB │ gzip: 1.93 kB
ℹ dist/nodes-screen-DT5HvhJV.js 4.96 kB │ gzip: 1.32 kB
ℹ dist/auth-health-Ctf-_JFE.js 4.94 kB │ gzip: 1.51 kB
ℹ dist/net-C8YRVt16.js 4.39 kB │ gzip: 1.49 kB
ℹ dist/message-channel-Bpfe5l5f.js 4.30 kB │ gzip: 1.28 kB
ℹ dist/progress-xpLtQsNY.js 4.16 kB │ gzip: 1.38 kB
ℹ dist/rpc-Vo2ACfn-.js 4.12 kB │ gzip: 1.74 kB
ℹ dist/github-copilot-token-pGSmVaW-.js 3.97 kB │ gzip: 1.55 kB
ℹ dist/dispatcher-6oI-H42S.js 3.93 kB │ gzip: 1.58 kB
ℹ dist/system-cli-SJLtqI47.js 3.90 kB │ gzip: 1.20 kB
ℹ dist/redact-DJCFY628.js 3.62 kB │ gzip: 1.43 kB
ℹ dist/shared-C8_5pNbb.js 3.21 kB │ gzip: 1.16 kB
ℹ dist/systemd-linger-N-cIaegf.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/cli-DD5dW58-.js 3.09 kB │ gzip: 1.32 kB
ℹ dist/archive-Dy3Ezb-5.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/constants-HPrOsATF.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-DP3DsVge.js 2.83 kB │ gzip: 1.11 kB
ℹ dist/tui-cli-DRSIBDgZ.js 2.81 kB │ gzip: 1.31 kB
ℹ dist/openclaw-root-Cvotktkd.js 2.80 kB │ gzip: 0.80 kB
ℹ dist/clack-prompter-CEKDd_Vg.js 2.61 kB │ gzip: 0.86 kB
ℹ dist/note-B5HnoeZX.js 2.46 kB │ gzip: 0.91 kB
ℹ dist/control-service-CS61Road.js 2.44 kB │ gzip: 0.95 kB
ℹ dist/paths-Bb0nwPeu.js 2.25 kB │ gzip: 0.73 kB
ℹ dist/channel-options-uftAnT5P.js 2.24 kB │ gzip: 0.92 kB
ℹ dist/node-service-BAYHx0E7.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-CJWYmCLf.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/command-format-ChfKqObn.js 1.95 kB │ gzip: 0.74 kB
ℹ dist/brew-CAcErcKz.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/usage-format-DvowRSs-.js 1.50 kB │ gzip: 0.58 kB
ℹ dist/format-B7OjpGnt.js 1.28 kB │ gzip: 0.61 kB
ℹ dist/parse-log-line-CARp5QyJ.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/env-0_mKbEWW.js 1.21 kB │ gzip: 0.58 kB
ℹ dist/tailnet-DLDGNuH2.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/gateway-rpc-C8rNIC0P.js 1.17 kB │ gzip: 0.62 kB
ℹ dist/systemd-hints-DO88c_nD.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-B6kCyqsv.js 1.00 kB │ gzip: 0.40 kB
ℹ dist/cli-utils-BkRQdAoC.js 0.98 kB │ gzip: 0.47 kB
ℹ dist/status-DBZ5Z7ng.js 0.97 kB │ gzip: 0.44 kB
ℹ dist/boolean-BgXe2hyu.js 0.86 kB │ gzip: 0.38 kB
ℹ dist/pi-model-discovery-CV2V1HHz.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-tCu4RWZH.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-BG1LonF6.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-5yebzF4C.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/parse-BZz5lHzQ.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-Bozi4K9H.js 0.67 kB │ gzip: 0.30 kB
ℹ dist/transcript-events-ChU6IQwp.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-CrS1r5sr.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/logging-TXWhN8jG.js 0.50 kB │ gzip: 0.30 kB
ℹ dist/links-B5pRdmo1.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/ws-CEcdsnN9.js 0.47 kB │ gzip: 0.24 kB
ℹ dist/parse-timeout-Du-wHHNi.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-vzh0MGHs.js 0.45 kB │ gzip: 0.25 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-BIc7L8EF.js 0.41 kB │ gzip: 0.26 kB
ℹ dist/pairing-labels-CtqLxbG6.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-FbZThK8w.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-BWRYHvLp.js 0.01 kB │ gzip: 0.03 kB
ℹ 142 files, total: 5996.16 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3658ms
ℹ dist/entry.js 44.79 kB │ gzip: 12.54 kB
ℹ dist/loader-_Pj-TZS2.js 2261.10 kB
ℹ dist/gateway-cli-DHP5DRUH.js 630.46 kB │ gzip: 148.31 kB
ℹ dist/config-guard-a5ynrKd-.js 226.47 kB │ gzip: 49.25 kB
ℹ dist/config-CKLedg5Y.js 177.09 kB │ gzip: 34.50 kB
ℹ dist/status-BRXuHUsK.js 119.01 kB │ gzip: 30.75 kB
ℹ dist/onboard-skills-YobctE-R.js 115.29 kB │ gzip: 25.01 kB
ℹ dist/sandbox-DuqLKN5J.js 108.29 kB │ gzip: 24.08 kB
ℹ dist/manager-BXiIQku7.js 105.83 kB │ gzip: 23.72 kB
ℹ dist/doctor-JnMryC_M.js 99.75 kB │ gzip: 25.38 kB
ℹ dist/auth-profiles-CYBuGiBb.js 99.53 kB │ gzip: 22.16 kB
ℹ dist/models-cli-DHzyyLvp.js 97.93 kB │ gzip: 22.11 kB
ℹ dist/deliver-Cau4HL7W.js 84.53 kB │ gzip: 21.11 kB
ℹ dist/tui-DPorsF4z.js 84.02 kB │ gzip: 20.06 kB
ℹ dist/routes-BSfXf8a5.js 78.93 kB │ gzip: 15.64 kB
ℹ dist/audit-BWbjQmyv.js 74.55 kB │ gzip: 18.24 kB
ℹ dist/client-CxbkcEZ7.js 66.49 kB │ gzip: 11.96 kB
ℹ dist/errors-CZ9opC6L.js 62.00 kB │ gzip: 15.75 kB
ℹ dist/channels-cli-PAlqhOZ7.js 55.46 kB │ gzip: 13.99 kB
ℹ dist/pw-ai-B7Fvw8DW.js 54.74 kB │ gzip: 12.64 kB
ℹ dist/health-format-ND2rUbQO.js 53.14 kB │ gzip: 12.92 kB
ℹ dist/nodes-cli-hT8yYD7S.js 51.73 kB │ gzip: 11.18 kB
ℹ dist/node-cli-DH7Ykym5.js 48.70 kB │ gzip: 12.30 kB
ℹ dist/pi-embedded-helpers-DF8SAHU-.js 44.88 kB │ gzip: 11.80 kB
ℹ dist/update-runner-2i8_mIG5.js 42.52 kB │ gzip: 9.39 kB
ℹ dist/update-cli-tQcy8mkI.js 38.79 kB │ gzip: 10.87 kB
ℹ dist/github-copilot-auth-B_lK1g__.js 38.53 kB │ gzip: 7.62 kB
ℹ dist/channel-summary-D9nzC5WB.js 36.51 kB │ gzip: 8.49 kB
ℹ dist/hooks-cli-CmeQxEOM.js 35.47 kB │ gzip: 8.13 kB
ℹ dist/configure-ChnTy7Jz.js 29.85 kB │ gzip: 7.80 kB
ℹ dist/daemon-cli-CMKd_D6h.js 29.78 kB │ gzip: 7.11 kB
ℹ dist/exec-approvals-BCEFzcbC.js 29.48 kB │ gzip: 6.88 kB
ℹ dist/agent-DztWhVCH.js 28.75 kB │ gzip: 7.23 kB
ℹ dist/acp-cli-BOKabdeW.js 28.73 kB │ gzip: 7.82 kB
ℹ dist/server-context-yKyxyxOJ.js 27.80 kB │ gzip: 7.23 kB
ℹ dist/skills-CmU0Q92f.js 26.75 kB │ gzip: 6.92 kB
ℹ dist/session-cost-usage-BTXosU1k.js 25.33 kB │ gzip: 5.95 kB
ℹ dist/cron-cli-CssI71-c.js 23.56 kB │ gzip: 5.79 kB
ℹ dist/service-_JwSmGSn.js 23.22 kB │ gzip: 5.55 kB
ℹ dist/onboard-channels-D-ZQTy5V.js 22.92 kB │ gzip: 5.85 kB
ℹ dist/image-nRwqkmtf.js 22.26 kB │ gzip: 6.53 kB
ℹ dist/sandbox-cli-Ces6i3n2.js 21.77 kB │ gzip: 5.62 kB
ℹ dist/qmd-manager-Dub8jfbo.js 20.76 kB │ gzip: 6.10 kB
ℹ dist/manifest-registry-C69Z-I4v.js 20.25 kB │ gzip: 5.07 kB
ℹ dist/service-audit-DDX1kO3k.js 18.65 kB │ gzip: 4.84 kB
ℹ dist/daemon-runtime-BCn_QIHK.js 18.23 kB │ gzip: 5.09 kB
ℹ dist/plugins-BUPpq5aS.js 17.93 kB │ gzip: 3.93 kB
ℹ dist/completion-cli-BbhA_JbG.js 16.66 kB │ gzip: 4.44 kB
ℹ dist/plugin-auto-enable-DyW8lHTT.js 16.66 kB │ gzip: 4.31 kB
ℹ dist/tool-display-DmgKs6-V.js 16.39 kB │ gzip: 3.82 kB
ℹ dist/security-cli-T7yrd3lb.js 16.17 kB │ gzip: 4.62 kB
ℹ dist/login-qr-Cmsf7BGt.js 16.16 kB │ gzip: 5.26 kB
ℹ dist/plugins-cli-Dr_R2-FY.js 16.13 kB │ gzip: 4.42 kB
ℹ dist/hooks-status-CKmUPU-M.js 16.06 kB │ gzip: 4.24 kB
ℹ dist/gmail-setup-utils-Bi6W14MK.js 15.37 kB │ gzip: 4.47 kB
ℹ dist/webhooks-cli-BztQHEco.js 14.46 kB │ gzip: 3.95 kB
ℹ dist/systemd-8sIc6isV.js 14.34 kB │ gzip: 4.12 kB
ℹ dist/installs-DsJkyWfL.js 14.05 kB │ gzip: 3.50 kB
ℹ dist/exec-approvals-cli-D7aVv5hN.js 13.95 kB │ gzip: 3.50 kB
ℹ dist/agent-scope-C9VjJXEK.js 13.37 kB │ gzip: 3.55 kB
ℹ dist/pairing-store-DTfv_FGA.js 11.94 kB │ gzip: 3.12 kB
ℹ dist/skills-cli-DBC5zFat.js 11.83 kB │ gzip: 2.93 kB
ℹ dist/ws-log-DJIXahf0.js 11.82 kB │ gzip: 2.86 kB
ℹ dist/call-90HgQQ8o.js 11.00 kB │ gzip: 3.30 kB
ℹ dist/register.subclis-BpIR6Iqi.js 10.61 kB │ gzip: 2.89 kB
ℹ dist/accounts-Dto4p9zB.js 8.84 kB │ gzip: 2.57 kB
ℹ dist/commands-DAC7XMAT.js 8.81 kB │ gzip: 2.44 kB
ℹ dist/update-DNAVcIQ7.js 8.71 kB │ gzip: 2.20 kB
ℹ dist/table-CJSx0YID.js 8.47 kB │ gzip: 2.75 kB
ℹ dist/logs-cli-DtiFFkZL.js 8.22 kB │ gzip: 2.77 kB
ℹ dist/program-oR55MCAT.js 8.14 kB │ gzip: 3.26 kB
ℹ dist/tailscale-9MusRvOi.js 8.09 kB │ gzip: 2.48 kB
ℹ dist/directory-cli-CGLolzJC.js 7.79 kB │ gzip: 1.87 kB
ℹ dist/server-node-events-BR2vHqf6.js 7.68 kB │ gzip: 2.20 kB
ℹ dist/dns-cli-CoeI4817.js 7.68 kB │ gzip: 2.85 kB
ℹ dist/skill-scanner-Bp1D9gra.js 7.68 kB │ gzip: 2.56 kB
ℹ dist/session-key-CZkcvAtx.js 7.39 kB │ gzip: 1.80 kB
ℹ dist/skills-status-DtXrj3fy.js 7.28 kB │ gzip: 2.27 kB
ℹ dist/run-main-DrVUUPHV.js 7.25 kB │ gzip: 2.83 kB
ℹ dist/devices-cli-D_rnGkqO.js 7.17 kB │ gzip: 2.15 kB
ℹ dist/exec-B8JKbXKW.js 7.15 kB │ gzip: 2.38 kB
ℹ dist/utils-DX85MiPR.js 6.65 kB │ gzip: 2.47 kB
ℹ dist/auth-DksjO6WG.js 6.35 kB │ gzip: 1.80 kB
ℹ dist/sqlite-DqUEZnjO.js 6.00 kB │ gzip: 2.03 kB
ℹ dist/shared-fnGLWyZ6.js 5.68 kB │ gzip: 2.03 kB
ℹ dist/docs-cli-BH9bMx3a.js 5.47 kB │ gzip: 1.98 kB
ℹ dist/pairing-cli-C8KHRjaU.js 5.09 kB │ gzip: 1.88 kB
ℹ dist/widearea-dns-CsSylzXH.js 5.04 kB │ gzip: 1.93 kB
ℹ dist/nodes-screen-DGlNPbk4.js 4.96 kB │ gzip: 1.32 kB
ℹ dist/auth-health-C4bElkgf.js 4.93 kB │ gzip: 1.50 kB
ℹ dist/net-CWMMy37F.js 4.39 kB │ gzip: 1.49 kB
ℹ dist/message-channel-BlgPSDAh.js 4.29 kB │ gzip: 1.27 kB
ℹ dist/progress-Da1ehW-x.js 4.14 kB │ gzip: 1.37 kB
ℹ dist/rpc-DqI3QH59.js 4.12 kB │ gzip: 1.74 kB
ℹ dist/github-copilot-token-SLWintYd.js 3.96 kB │ gzip: 1.54 kB
ℹ dist/wsl-ATjkMwMA.js 3.93 kB │ gzip: 1.59 kB
ℹ dist/system-cli-Dqnt-b0D.js 3.79 kB │ gzip: 1.15 kB
ℹ dist/redact-B8YiFlwn.js 3.62 kB │ gzip: 1.43 kB
ℹ dist/shared-C1XLEyB0.js 3.20 kB │ gzip: 1.15 kB
ℹ dist/systemd-linger-SsSOsJST.js 3.19 kB │ gzip: 1.01 kB
ℹ dist/ports-0V-Mu4ch.js 3.14 kB │ gzip: 1.12 kB
ℹ dist/archive-D0z3LZDK.js 3.00 kB │ gzip: 1.16 kB
ℹ dist/cli-DBAccB3n.js 2.97 kB │ gzip: 1.27 kB
ℹ dist/constants-D1op9uGI.js 2.88 kB │ gzip: 0.79 kB
ℹ dist/path-env-h3xp5PqO.js 2.83 kB │ gzip: 1.10 kB
ℹ dist/openclaw-root-9ILYSmJ9.js 2.80 kB │ gzip: 0.80 kB
ℹ dist/tui-cli-DV_JAtnq.js 2.71 kB │ gzip: 1.26 kB
ℹ dist/clack-prompter-DuBVnTKy.js 2.60 kB │ gzip: 0.84 kB
ℹ dist/note-Ci08TSbV.js 2.45 kB │ gzip: 0.90 kB
ℹ dist/control-service-D2E9NKqQ.js 2.42 kB │ gzip: 0.95 kB
ℹ dist/paths-CTg8F3AE.js 2.24 kB │ gzip: 0.72 kB
ℹ dist/node-service-Lc1LlnFH.js 2.09 kB │ gzip: 0.62 kB
ℹ dist/channel-selection-PZuuCvrp.js 2.06 kB │ gzip: 0.73 kB
ℹ dist/brew-CcZV0dSS.js 1.65 kB │ gzip: 0.58 kB
ℹ dist/command-format-ayFsmwwz.js 1.58 kB │ gzip: 0.64 kB
ℹ dist/usage-format-E3bMcUMV.js 1.50 kB │ gzip: 0.58 kB
ℹ dist/format-CS7EI0xF.js 1.28 kB │ gzip: 0.61 kB
ℹ dist/parse-log-line-C6szvNBZ.js 1.23 kB │ gzip: 0.52 kB
ℹ dist/tailnet-Byp3obcc.js 1.21 kB │ gzip: 0.55 kB
ℹ dist/channel-options-DrUmtdd9.js 1.18 kB │ gzip: 0.56 kB
ℹ dist/gateway-rpc-CWnTaSEY.js 1.17 kB │ gzip: 0.63 kB
ℹ dist/command-options-DUUINcz0.js 1.13 kB │ gzip: 0.51 kB
ℹ dist/systemd-hints-Wim4Bq6j.js 1.11 kB │ gzip: 0.55 kB
ℹ dist/is-main-qJ675wPV.js 1.00 kB │ gzip: 0.40 kB
ℹ dist/cli-utils-ByANh4Sp.js 0.98 kB │ gzip: 0.47 kB
ℹ dist/status-BTGXSvZ1.js 0.96 kB │ gzip: 0.43 kB
ℹ dist/pi-model-discovery-DzEIEgHL.js 0.84 kB │ gzip: 0.37 kB
ℹ dist/status-CRIEi8Mc.js 0.82 kB │ gzip: 0.35 kB
ℹ dist/deps-ytXmI88x.js 0.81 kB │ gzip: 0.32 kB
ℹ dist/helpers-EKm3X92T.js 0.79 kB │ gzip: 0.39 kB
ℹ dist/parse-gTOGQPH6.js 0.70 kB │ gzip: 0.36 kB
ℹ dist/help-format-CfZ94KRN.js 0.66 kB │ gzip: 0.28 kB
ℹ dist/transcript-events-CZ8CG4ht.js 0.59 kB │ gzip: 0.29 kB
ℹ dist/channels-status-issues-CJ8PJgDc.js 0.55 kB │ gzip: 0.30 kB
ℹ dist/links-D0uzJbi6.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/logging-Cc7m6PTv.js 0.49 kB │ gzip: 0.29 kB
ℹ dist/ws-D091yo4M.js 0.47 kB │ gzip: 0.24 kB
ℹ dist/parse-timeout-CbVKLZ4B.js 0.46 kB │ gzip: 0.26 kB
ℹ dist/prompt-style-Dc0C5HC9.js 0.44 kB │ gzip: 0.23 kB
ℹ dist/rolldown-runtime-Cbj13DAv.js 0.42 kB │ gzip: 0.28 kB
ℹ dist/helpers-D66_XoIz.js 0.41 kB │ gzip: 0.25 kB
ℹ dist/pairing-labels-BbydDT7w.js 0.26 kB │ gzip: 0.19 kB
ℹ dist/prompts-CXLLIBwP.js 0.24 kB │ gzip: 0.17 kB
ℹ dist/logging-CfEk_PnX.js 0.01 kB │ gzip: 0.03 kB
ℹ 144 files, total: 6004.27 kB
[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `tsdown:external`. See https://rolldown.rs/options/checks#plugintimings for more details.

✔ Build complete in 3661ms

🦞 OpenClaw 2026.2.4 (c75275f) — iMessage green bubble energy, but for everyone.


◇ Doctor changes ───────────────────────────────────────────────────────────────────────╮
│ │
│ – State dir: /home/mamu/.clawdbot → /home/mamu/.openclaw (legacy path now symlinked) │
│ │
├────────────────────────────────────────────────────────────────────────────────────────╯
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

┌ OpenClaw onboarding

◇ Security ──────────────────────────────────────────────────────────────────────────────╮
│ │
│ Security warning — please read. │
│ │
│ OpenClaw is a hobby project and still in beta. Expect sharp edges. │
│ This bot can read files and run actions if tools are enabled. │
│ A bad prompt can trick it into doing unsafe things. │
│ │
│ If you’re not comfortable with basic security and access control, don’t run OpenClaw. │
│ Ask someone experienced to help before enabling tools or exposing it to the internet. │
│ │
│ Recommended baseline: │
│ – Pairing/allowlists + mention gating. │
│ – Sandbox + least-privilege tools. │
│ – Keep secrets out of the agent’s reachable filesystem. │
│ – Use the strongest available model for any bot with tools or untrusted inboxes. │
│ │
│ Run regularly: │
│ openclaw security audit –deep │
│ openclaw security audit –fix │
│ │
│ Must read: https://docs.openclaw.ai/gateway/security │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◆ I understand this is powerful and inherently risky. Continue?
│ ○ Yes / ● No

まず:この画面は Yes で進める

いま表示されてるのは「危険性わかってる?ほんまに続ける?」の確認。
ここで Yes を選ばない限り、daemon のインストールや gateway 起動まで行かない

ブラウザが開かないのは“あるある”。手で開けばOK

pnpm openclaw dashboard は環境によってはブラウザ自動起動に失敗する(SSH越し / GUIなし / xdg-open未設定 / Waylandまわり)ので、URLを手で開けばいい

onboarding を最後まで進めたあとに、まずこれ:

pnpm openclaw gateway status

ここで running になってるか確認。

次に、dashboard のURLを自分で開くために:

pnpm openclaw dashboard --print-url

(もし --print-url が無かったら、dashboard 実行時にログにURLが出るはず。出なければ下の「ポート確認」へ。)

“daemon” が入ったか確認(systemd)

--install-daemon してるので、多くの場合 systemd user service ができてる。

systemctl --user status openclaw-gateway.service --no-pager

動いてなければ:

systemctl --user restart openclaw-gateway.service
journalctl --user -u openclaw-gateway.service -n 200 --no-pager

それでも dashboard が見えない時の最短チェック

1) ポート待ち受け確認

(OpenClawのdashboard既定が何番かは環境で変わることがあるので、まず LISTEN を見る)

ss -lntp | grep -E 'openclaw|node' | head -n 20

2) openclaw側のログ

pnpm openclaw gateway logs --tail 200

セキュリティの話(onboardingの警告に対応する“最小安全運用”)

画面に書いてある通り、ここだけ守れば当面は安全側に倒せる:

  • 外部公開しない(まず localhost のみ)
  • tools を最小/無効で開始
  • もし何か連携するなら allowlist / mention gating を最初に(勝手に動かさない)

次にやること(順番これ)

  1. onboarding 画面で Yes
  2. 終わったら pnpm openclaw gateway status systemctl --user status openclaw-gateway.service --no-pager
  3. dashboard のURLを表示して自分で開く pnpm openclaw dashboard --print-url

で、いまのログは onboardingの途中で止まってるだけに見える。yesを入力すると以下が表示されました。

◇ I understand this is powerful and inherently risky. Continue?
│ Yes

◆ Onboarding mode
│ ● QuickStart (Configure details later via openclaw configure.)
│ ○ Manual

そもそもブラウザのコマンドって必要なの?

基本:いらん。SSH接続してたから。
ブラウザ(dashboard)は「見た目の管理画面」なだけで、OpenClaw自体はCLIとdaemon(gateway)が動けば成立する。

ブラウザ(dashboard)が必要になる場面

  • ペアリング(QR/認証)とか、初期セットアップをGUIでやりたい
  • チャンネル/接続先の状態を視覚で確認したい
  • 設定をポチポチ触りたい(CLIより楽なとき)

逆に言うと、慣れてる人はdashboard開かずに運用も普通にやる。

ブラウザが不要な運用(CLIだけで完結)

最低限これだけでOK:

pnpm openclaw gateway status
pnpm openclaw doctor
pnpm openclaw security audit --deep
pnpm openclaw logs --tail 200   # もしあれば。無ければ gateway logs

daemonとして生きてれば勝ち:

systemctl --user status openclaw-gateway.service --no-pager

じゃあ “ブラウザコマンド” は何のため?

openclaw dashboard はただの便利機能で、

  • ローカルのURLを立ち上げる
  • 可能なら xdg-open みたいのでブラウザを開く

ってやってくれるだけ。
開かない環境(SSH/GUIなし)なら当然失敗しがちなので、気にしなくてOK。

いまの状況でのおすすめ

まずは gatewayを動かす / ペアリング / 最小権限 をCLIで固める。
dashboardは「見たい時だけ」でいい。

ここは QuickStart で進めてOK
いまの画面の意味は「初期設定をどこまで今やる?」ってだけ。

どっちを選ぶべき?

● QuickStart(おすすめ)

  • “とりあえず動かす” が最速
  • 後から openclaw configure で細かく詰められる
  • まず gateway/daemonが起動して、ローカルで触れる状態を作れる

Manual(いまは不要)

  • 接続先(Slack/Discord等)や権限、ツール、保存先、モデル等を最初から全部決めたい人向け
  • セキュリティ設計を最初からガチる場合はこっち

自分の場合は「まず再インストールして復帰」なので、QuickStart一択でいい。

なぜ「入れ直し」が必要だったか(名前が変わったから)

ログにも出てたけど、

  • 状態ディレクトリが
    /home/mamu/.clawdbot/home/mamu/.openclaw
    に変わってる(古いのは symlink で救済)

つまり、プロジェクト名変更に合わせて、daemonや設定の置き場も変わったから、onboard で “新体制での起動セット” を作り直してるだけ。

嘘っぽく見えるけど、これ 普通にありえる
理由はシンプルで、OpenClaw 側が「旧パス互換のために 勝手に .clawdbot を“作り直す”」動きをしてる可能性が高い。

ログの文言もこうだった:

State dir: /home/mamu/.clawdbot → /home/mamu/.openclaw (legacy path now symlinked)

つまり 「昔の場所が無いなら作ってでも symlink 置く」 って発想。

まず確認:それ “ディレクトリ” じゃなくて “シンボリックリンク” じゃね?

これで一発で分かる:

ls -la ~/.clawdbot ~/.openclaw
readlink -f ~/.clawdbot 2>/dev/null || true

想定パターンはこれ:

  • ~/.openclaw が実体ディレクトリ
  • ~/.clawdbot -> /home/mamu/.openclaw みたいな symlink

もしこうなら、「事前に消した」は正しくて、onboarding が“互換のために復活させた”だけ。

mamu@evo-x2:~/openclaw$ ls -la ~/.clawdbot ~/.openclaw
readlink -f ~/.clawdbot 2>/dev/null || true
lrwxrwxrwx 1 mamu mamu 20 Feb 6 20:28 /home/mamu/.clawdbot -> /home/mamu/.openclaw

/home/mamu/.openclaw:
total 16
drwxrwxr-x 3 mamu mamu 4096 Feb 6 17:29 .
drwxr-x–x 28 mamu mamu 4096 Feb 6 20:28 ..
drwxrwxr-x 2 mamu mamu 4096 Feb 6 17:29 cron
-rw-rw-r– 1 mamu mamu 49 Feb 6 17:29 update-check.json
/home/mamu/.openclaw

これ、.clawdbot実体じゃなくて symlink だから、事前に消してても OpenClaw が互換のために作り直しただけ。

/home/mamu/.clawdbot -> /home/mamu/.openclaw

つまり今の正しい理解はこれ:

  • 本体(state dir)は ~/.openclaw
  • ~/.clawdbot は古い設定参照のための“入口”として残してるだけ

しかも .openclaw の中身が cron/update-check.json くらいなので、まだ全然クリーン。

じゃあ、消してもいいの?

基本はこう:

  • 今後OpenClawだけ使うなら、.clawdbotなくても動くはず(ただし互換のため残してるだけ)
  • でも、他のツール/古いスクリプトが .clawdbot を参照する可能性があるから、運用的には残しとくのが安全

「スッキリしたい」なら、まず中身と参照を確認してからね。で、結論:

  • .clawdbot を消すのは基本まずくない(OpenClaw自体は .openclaw が本体)
  • ただし 消した瞬間に困る可能性がある人はいる
    → それが「旧clawdbot時代の何か(スクリプト/サービス/設定)が .clawdbot を参照してる人」

「バージョンアップみたいに移行した人」はまさにこれに該当しがち。

もし本当に “実体ディレクトリ” として復活してたら?

たとえば ~/.clawdbot/ が普通にディレクトリで中身もある場合。

その場合は、OpenClawが初回起動で 旧→新の移行用にディレクトリを作ったか、何かが旧パスを参照して生成した可能性。

確認:

file ~/.clawdbot
du -sh ~/.clawdbot ~/.openclaw 2>/dev/null

いちばん安全な扱い(おすすめ)

  • .openclaw を正(本体)として使う
  • .clawdbot は互換リンクとして放置

でOK。

QuickStart で進めると・・・

◇ I understand this is powerful and inherently risky. Continue?
│ Yes

◇ Onboarding mode
│ QuickStart

◇ QuickStart ─────────────────────────╮
│ │
│ Gateway port: 18789 │
│ Gateway bind: Loopback (127.0.0.1) │
│ Gateway auth: Token (default) │
│ Tailscale exposure: Off │
│ Direct to chat channels. │
│ │
├──────────────────────────────────────╯

◆ Model/auth provider
│ ● xAI (Grok) (API key)
│ ○ OpenAI
│ ○ Anthropic
│ ○ MiniMax
│ ○ Moonshot AI (Kimi K2.5)
│ ○ Google
│ ○ OpenRouter
│ ○ Qwen
│ ○ Z.AI (GLM 4.7)
│ ○ Copilot
│ ○ Vercel AI Gateway
│ ○ OpenCode Zen
│ ○ Xiaomi
│ ○ Synthetic
│ ○ Venice AI
│ ○ Cloudflare AI Gateway
│ ○ Skip for now

まず答え:ブラウザのコマンドは「必須じゃない」

pnpm openclaw dashboard は Control UI(管理画面)をブラウザで開くための“便利コマンド”で、OpenClaw本体(gateway/daemon)が動くのに必須ではないです。

ただし QuickStart は“あとでWeb管理画面で触れる”前提の導線になってるので、ブラウザが自動で開かなくても 手動でURLを開けばOKです。
多くの手順で、Dashboard URL はこんな形式で出ます:http://127.0.0.1:18789/?token=...

「Model/auth provider」って何?(Codex / Claude Codeの設定とは別)

ここで選ぶのは OpenClawが問い合わせる“LLMの供給元”です。

  • Claude CodeCodex は「別のCLI/開発ツール」で、OpenClawのこの画面で“自動的に使う”話とは別枠。
  • OpenClaw側で必要なのは “どこのLLM API(あるいは互換API)に投げるか”

じゃあ、この状況だとどう選ぶ?

自分の環境では:

  • Codex と Claude Code は入ってる。
  • ローカルにQwenがある
  • でもこの画面の候補には OpenAI/Anthropic/Qwen/OpenRouter… などがある

パターンA:今すぐ動かす(最短)

「Skip for now」でオンボード完走 → あとで openclaw configure で詰める。
これが一番安全&確実。変なキー入れて事故るよりまず起動確認。

パターンB:クラウドAPIで行く(キーがあるやつを選ぶ)

  • Claudeのキーがある → Anthropic
  • OpenAIのキーがある → OpenAI
  • OpenRouterのキーがある → OpenRouter

パターンC:ローカルQwenで行きたい(ここ注意)

このメニューの 「Qwen」は、文脈的に“ローカルQwen”じゃなくて Qwen系のクラウド(DashScope/Model Studio等)を指すことが多いです(APIキー設定の話になりがち)。

ローカルQwenをOpenClawに食わせる典型は、

  • Ollama / vLLM / llama.cpp などで OpenAI互換エンドポイントとして立てる
  • OpenClaw側は OpenAI(互換)として base_url を差し替える
    みたいなやり方になります(=この画面で「Qwen」を選べば即ローカル、にはなりにくい)。

なのでローカルQwen優先なら、いったん Skip for nowで完走 → その後に設定が一番ミスりにくい。

次の一手(おすすめ手順)

  1. QuickStartのまま進める(Loopback + Token で正解。外に出さないのが正義)
  2. Provider は Skip for now(まず起動確認)
  3. オンボードが終わったら、次を実行して状況を見る
    • pnpm openclaw gateway status
    • pnpm openclaw dashboard(開かなければ、表示されたURLを手動で開く)

「clawdbotは作られるんか」問題(結論:作られるというか“互換のために残る”)

あなたが見たとおり、~/.clawdbot -> ~/.openclaw のシンボリックリンクが張られます。
つまり旧パス参照を壊さないための互換。だから「昔の人が消すとまずい」もその通り。

最後に:Codex/Claude Codeは設定しないとダメ?

今このオンボード画面では“設定しなくてOK”
まず OpenClaw の gateway/daemon が正常起動するのが先。

その後に、

  • OpenClawに「どのモデルへ投げるか(API/ローカル互換)」を設定
  • 必要なら「コーディング系のスキル/連携(Codex/Claude Code)」を追加
    の順が事故りにくい。

Skip for nowを選択すると・・・

◇ Model/auth provider
│ Skip for now

◆ Filter models by provider
│ ● All providers
│ ○ amazon-bedrock
│ ○ anthropic
│ ○ azure-openai-responses
│ ○ cerebras
│ ○ github-copilot
│ ○ google
│ ○ google-antigravity
│ ○ google-gemini-cli
│ ○ google-vertex
│ ○ groq
│ ○ huggingface
│ ○ kimi-coding
│ ○ minimax
│ ○ minimax-cn
│ ○ mistral
│ ○ openai
│ ○ openai-codex
│ ○ opencode
│ ○ openrouter
│ ○ vercel-ai-gateway
│ ○ xai
│ ○ zai

Skip for now でも“モデル一覧”は選ばせる仕様っぽいです。ここは「今すぐ鍵を入れる」じゃなくて、後で使う候補を絞るフィルタに近い。

で、私の目的(Codex/Claude Code/Qwenローカルが気になる)に合わせた“雑に間違えない選び方”はこれ👇

ここはどう選ぶべき?

✅ 結論:いまは All providers のまま進めてOK

理由:

  • まだ鍵も入れてない
  • QuickStart完走が目的
  • フィルタは後からいくらでも変えられる(= いま決め打ちする価値が薄い)

つまり、All providersのまま次へが最短で安全。

でも「思想」を入れるなら

もし “後で迷いたくない” なら、フィルタはこう選ぶと頭がスッキリする。

1) Codex 使う前提なら

  • openai-codex
  • (場合によっては)openai

※ CodexはOpenAI系の別枠になってるから、ここに明示であるのは良いサイン。

2) Claude Code 使う前提なら

  • anthropic

3) ローカルQwen前提なら

ここが罠ポイントで、一覧には qwen が無いよね。
つまり、このQuickStartの想定は多分こう:

  • ローカルQwenは “openai互換” として繋ぐ(vLLM/Ollama互換など)
  • だからフィルタ的には openai(または opencode / openrouter)側で吸収する

→ なのでローカルQwenを見据えるなら、フィルタは openai が近い。

じゃあ今回はどうする?

「まず起動させたい」「設定は後で詰めたい」なので、

All providers のまま進める
→ オンボード完走
gateway status で起動確認
→ その後 openclaw configure

  • Claude Code 経由にするか
  • Codex 経由にするか
  • ローカルQwenをOpenAI互換で刺すか
    を決める

これが“事故らない最短”。

ちなみに:この画面で「選んだら固定」?

固定じゃない。
この手のCLIは、あとで設定ファイル(~/.openclaw 配下)を更新するだけで変えられる。

All providers のまま進めると・・・

◇ Filter models by provider
│ All providers

◆ Default model
│ ● Keep current (default: anthropic/claude-opus-4-6)
│ ○ Enter model manually
│ ○ amazon-bedrock/anthropic.claude-3-haiku-20240307-v1:0
│ ○ amazon-bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
│ ○ amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0
│ ○ amazon-bedrock/eu.anthropic.claude-haiku-4-5-20251001-v1:0
│ ○ amazon-bedrock/global.anthropic.claude-haiku-4-5-20251001-v1:0
│ ○ amazon-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0
│ ○ amazon-bedrock/anthropic.claude-3-opus-20240229-v1:0
│ ○ amazon-bedrock/anthropic.claude-opus-4-20250514-v1:0
│ ○ amazon-bedrock/us.anthropic.claude-opus-4-20250514-v1:0
│ ○ amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0
│ ○ amazon-bedrock/us.anthropic.claude-opus-4-1-20250805-v1:0
│ ○ amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0
│ ○ amazon-bedrock/eu.anthropic.claude-opus-4-5-20251101-v1:0
│ ○ amazon-bedrock/global.anthropic.claude-opus-4-5-20251101-v1:0
│ ○ amazon-bedrock/us.anthropic.claude-opus-4-5-20251101-v1:0
│ ○ amazon-bedrock/anthropic.claude-opus-4-6-v1
│ ○ amazon-bedrock/eu.anthropic.claude-opus-4-6-v1
│ ○ amazon-bedrock/global.anthropic.claude-opus-4-6-v1
│ ○ amazon-bedrock/us.anthropic.claude-opus-4-6-v1
│ ○ amazon-bedrock/anthropic.claude-3-sonnet-20240229-v1:0
│ ○ amazon-bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0
│ …

ここで何を選ぶべき?

「いまは鍵も入れてない / まず起動させたい」なら、最適はこれ:

✅ Keep current (default: anthropic/claude-opus-4-6) のまま進めてOK

理由:

  • ここで選ぶのは「将来の既定値」で、未認証ならどうせ呼べない
  • 先に gateway/daemon を立ち上げるのが目的
  • 後で openclaw configure でいくらでも変えられる

つまり “起動優先ならKeep current” が正解。

ただし:後で困るパターンだけ先に潰す

あなたの環境だと「Claude Code / Codex / ローカルQwen」がある。

この画面で “無理に” それに寄せるなら、優先順位はこう:

1) Claude Code を使いたい(推し)

  • いま表示の anthropic/claude-opus-4-6 系のままでOK
    (ただし後で Anthropic の認証/ルートが必要)

2) Codex を使いたい

  • ここで Enter model manually にして
    openai-codex/...(リストに出てくるやつ)へ寄せるのが筋
    でも 今は鍵なしなので、起動優先なら後回しが良い。

3) ローカルQwenを使いたい

  • このリストは “クラウドprovider中心” っぽいので、Qwenローカルは多分 「OpenAI互換API」扱いで openai/... に寄せることになる
  • つまりここで決めるより、あとで base_url / api_key(dummy) / model名 を設定ファイルに入れる方が確実

Keep current (default: anthropic/claude-opus-4-6) で進めると・・・

◇ Default model
│ Keep current (default: anthropic/claude-opus-4-6)

◇ Model check ───────────────────────────────────────────────────────────────────────────╮
│ │
│ No auth configured for provider “anthropic”. The agent may fail until credentials are │
│ added. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◇ Channel status ────────────────────────────╮
│ │
│ Telegram: not configured │
│ WhatsApp: not configured │
│ Discord: not configured │
│ Google Chat: not configured │
│ Slack: not configured │
│ Signal: not configured │
│ iMessage: not configured │
│ Feishu: install plugin to enable │
│ Google Chat: install plugin to enable │
│ Nostr: install plugin to enable │
│ Microsoft Teams: install plugin to enable │
│ Mattermost: install plugin to enable │
│ Nextcloud Talk: install plugin to enable │
│ Matrix: install plugin to enable │
│ BlueBubbles: install plugin to enable │
│ LINE: install plugin to enable │
│ Zalo: install plugin to enable │
│ Zalo Personal: install plugin to enable │
│ Tlon: install plugin to enable │
│ │
├─────────────────────────────────────────────╯

◇ How channels work ─────────────────────────────────────────────────────────────────────╮
│ │
│ DM security: default is pairing; unknown DMs get a pairing code. │
│ Approve with: openclaw pairing approve
│ Public DMs require dmPolicy="open" + allowFrom=["*"]. │
│ Multi-user DMs: set session.dmScope="per-channel-peer" (or "per-account-channel-peer" │
│ for multi-account channels) to isolate sessions. │
│ Docs: start/pairing │
│ │
│ Telegram: simplest way to get started — register a bot with @BotFather and get going. │
│ WhatsApp: works with your own number; recommend a separate phone + eSIM. │
│ Discord: very well supported right now. │
│ Google Chat: Google Workspace Chat app with HTTP webhook. │
│ Slack: supported (Socket Mode). │
│ Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord."). │
│ iMessage: this is still a work in progress. │
│ Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools. │
│ Nostr: Decentralized protocol; encrypted DMs via NIP-04. │
│ Microsoft Teams: Bot Framework; enterprise support. │
│ Mattermost: self-hosted Slack-style chat; install the plugin to enable. │
│ Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots. │
│ Matrix: open protocol; install the plugin to enable. │
│ BlueBubbles: iMessage via the BlueBubbles mac app + REST API. │
│ LINE: LINE Messaging API bot for Japan/Taiwan/Thailand markets. │
│ Zalo: Vietnam-focused messaging platform with Bot API. │
│ Zalo Personal: Zalo personal account via QR code login. │
│ Tlon: decentralized messaging on Urbit; install the plugin to enable. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◆ Select channel (QuickStart)
│ ● Telegram (Bot API) (not configured)
│ ○ WhatsApp (QR link)
│ ○ Discord (Bot API)
│ ○ Google Chat (Chat API)
│ ○ Slack (Socket Mode)
│ ○ Signal (signal-cli)
│ ○ iMessage (imsg)
│ ○ Feishu/Lark (飞书)
│ ○ Nostr (NIP-04 DMs)
│ ○ Microsoft Teams (Bot Framework)
│ ○ Mattermost (plugin)
│ ○ Nextcloud Talk (self-hosted)
│ ○ Matrix (plugin)
│ ○ BlueBubbles (macOS app)
│ ○ LINE (Messaging API)
│ ○ Zalo (Bot API)
│ ○ Zalo (Personal Account)
│ ○ Tlon (Urbit)
│ ○ Skip for now

いま起きてること(結論)

1) モデル(Anthropic)の認証が未設定

No auth configured for provider "anthropic"

これは「デフォルトが anthropic/claude-opus… だけど、鍵もログインも無いから そのモデルは呼べない。だから後で失敗するかもね」って警告。

2) チャネル(Telegram/Discord/Slack等)が未設定

今は「どこからメッセージ受け取るの?」を選べって段階。

ここでの最適解

「まずは動作確認したい」「SSH」「外部に晒したくない」「キーもまだ」
Skip for now が正解。

✅ いまはこれで進める

Select channel (QuickStart)Skip for now

理由:

  • チャネル設定は後でいくらでもできる
  • いきなりTelegram選ぶと BotFatherトークンが必要になって止まる
  • SSHだと「dashboard」も勝手に開かないので、まずはdaemon/gatewayの稼働確認が先

その次にやること(“動いたか”確認)

オンボードを最後まで進めたら、これ:

pnpm openclaw gateway status
pnpm openclaw doctor
  • gateway statusrunning / listening っぽい表示なら勝ち
  • doctor は不足してる設定を教えてくれる(ここで auth/channel が未設定でもOK)

「ブラウザ系コマンド」って結局いる?

いらん。(少なくともSSH運用では)

ただし、UIを見たいなら「自分のPC側のブラウザ」で見る。

SSHでUIを見る方法(安全版)

リモートが 127.0.0.1 bind なので、そのままだと外から見えない。そこで SSHポートフォワード:

ssh -L 18789:127.0.0.1:18789 mamu@<server>

そして手元PCのブラウザで:

  • http://127.0.0.1:18789

(ポートが違う場合は、表示されたURL/ポートに合わせて -L を変える)

「じゃあモデル認証はいつやる?」

起動確認できた後でOK。順番はこれが事故らない:

  1. Skip for nowでオンボード完走
  2. gateway/daemonが生きてるか確認
  3. 使う経路を決める
    • Claude Code経由でAnthropicにするのか
    • Codex / OpenAIにするのか
    • ローカルQwen(OpenAI互換)にするのか

いまの画面で迷うポイントだけ先に言っとく

  • Telegram: ほぼ確実に Bot token 要求される
  • Discord/Slack: アプリ登録が必要(少し重い)
  • Skip for now: “ローカル起動確認” の最短ルート

Skip for nowを選択すると・・・

◇ Model check ───────────────────────────────────────────────────────────────────────────╮
│ │
│ No auth configured for provider "anthropic". The agent may fail until credentials are │
│ added. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◇ Channel status ────────────────────────────╮
│ │
│ Telegram: not configured │
│ WhatsApp: not configured │
│ Discord: not configured │
│ Google Chat: not configured │
│ Slack: not configured │
│ Signal: not configured │
│ iMessage: not configured │
│ Feishu: install plugin to enable │
│ Google Chat: install plugin to enable │
│ Nostr: install plugin to enable │
│ Microsoft Teams: install plugin to enable │
│ Mattermost: install plugin to enable │
│ Nextcloud Talk: install plugin to enable │
│ Matrix: install plugin to enable │
│ BlueBubbles: install plugin to enable │
│ LINE: install plugin to enable │
│ Zalo: install plugin to enable │
│ Zalo Personal: install plugin to enable │
│ Tlon: install plugin to enable │
│ │
├─────────────────────────────────────────────╯

◇ How channels work ─────────────────────────────────────────────────────────────────────╮
│ │
│ DM security: default is pairing; unknown DMs get a pairing code. │
│ Approve with: openclaw pairing approve
│ Public DMs require dmPolicy="open" + allowFrom=["*"]. │
│ Multi-user DMs: set session.dmScope="per-channel-peer" (or "per-account-channel-peer" │
│ for multi-account channels) to isolate sessions. │
│ Docs: start/pairing │
│ │
│ Telegram: simplest way to get started — register a bot with @BotFather and get going. │
│ WhatsApp: works with your own number; recommend a separate phone + eSIM. │
│ Discord: very well supported right now. │
│ Google Chat: Google Workspace Chat app with HTTP webhook. │
│ Slack: supported (Socket Mode). │
│ Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord."). │
│ iMessage: this is still a work in progress. │
│ Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools. │
│ Nostr: Decentralized protocol; encrypted DMs via NIP-04. │
│ Microsoft Teams: Bot Framework; enterprise support. │
│ Mattermost: self-hosted Slack-style chat; install the plugin to enable. │
│ Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots. │
│ Matrix: open protocol; install the plugin to enable. │
│ BlueBubbles: iMessage via the BlueBubbles mac app + REST API. │
│ LINE: LINE Messaging API bot for Japan/Taiwan/Thailand markets. │
│ Zalo: Vietnam-focused messaging platform with Bot API. │
│ Zalo Personal: Zalo personal account via QR code login. │
│ Tlon: decentralized messaging on Urbit; install the plugin to enable. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◇ Select channel (QuickStart)
│ Skip for now
Updated ~/.clawdbot/openclaw.json
Workspace OK: ~/.openclaw/workspace
Sessions OK: ~/.openclaw/agents/main/sessions

◇ Skills status ────────────╮
│ │
│ Eligible: 6 │
│ Missing requirements: 44 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◆ Configure skills now? (recommended)
│ ● Yes / ○ No

オンボードは いったん“土台”ができた 状態まで来てる。
表示内容から判断すると、今ここで一番大事なのは 「まだ鍵(auth)もチャネルも無い状態で、いきなりスキル(=実行権限)を盛らない」 ってこと。

いまの画面の意味(超要点)

  • Model check: anthropic の認証が無い → このままだとデフォルトモデル(Claude Opus)呼べず、後で失敗する可能性あり
  • Channel: 全部未設定 → どこからメッセージ受けるか未決
  • openclaw.json 更新済み: ~/.clawdbot/openclaw.json に設定を書いた(※実体は ~/.openclaw に寄ってる)
  • Skills status:
    • Eligible: 6(今の環境で有効化できるスキルが6個だけある)
    • Missing requirements: 44(44個は依存ツール/キー等が足りなくて使えない)

ここはどうする?(おすすめ)

✅ まずは 「No」 が安全で最短

Configure skills now?No

理由:

  • まだ auth(鍵)もチャネルも未設定
  • スキルは「ファイル読んだり、コマンド叩いたり」の入口になりやすい
    → 先に稼働確認と認証設計を固めた方が事故らない

(“どうせみんな意味不明でやってる”勢はここで Yes 連打して燃えるw)

次にやること(SSH前提の勝ち筋)

オンボードを抜けたら、まず稼働確認だけ:

pnpm openclaw gateway status
pnpm openclaw doctor
  • gateway status:生きてるか(listenしてるか)
  • doctor:次に足りないものを箇条書きで出してくれる(今だと auth / channel が主)

そのあと:どの“認証ルート”で行くか

Codex / Claude Code / ローカルQwen は、ここで分岐する。

ただ、今の画面は「プロバイダ選択でAPIキー系に寄ってた」から、
“ローカルQwenをOpenAI互換で叩く” とか “Claude Codeの認証を流用” をするなら、たぶん 手動設定(configure / json編集) 側に寄る。

なので順番はこれが安定:

  1. gateway/daemon が動いてるのを確認
  2. 使うモデル経路を決める(ローカル優先ならそこを先に)
  3. 最後にスキルを最小から有効化

“スキルはいつやる?”

モデルの認証が通って、チャネル or ローカルUIの入口が確定してからでOK。
その時も、最初は「危険度低いやつだけ」に絞るのが正解。

Noを選択すると・・・

◇ Configure skills now? (recommended)
│ No

◇ Hooks ──────────────────────────────────────────────────────────╮
│ │
│ Hooks let you automate actions when agent commands are issued. │
│ Example: Save session context to memory when you issue /new. │
│ │
│ Learn more: https://docs.openclaw.ai/hooks │
│ │
├──────────────────────────────────────────────────────────────────╯

◇ No Hooks Available ─────────────────────────────────────────────────────╮
│ │
│ No eligible hooks found. You can configure hooks later in your config. │
│ │
├──────────────────────────────────────────────────────────────────────────╯

◇ Gateway service runtime ────────────────────────────────────────────╮
│ │
│ QuickStart uses Node for the Gateway service (stable + supported). │
│ │
├──────────────────────────────────────────────────────────────────────╯

◐ Installing Gateway service…
Installed systemd service: /home/mamu/.config/systemd/user/openclaw-gateway.service
◇ Gateway service installed.

gateway connect failed: Error: unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)

Health check failed: gateway closed (1008): unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/mamu/.openclaw/openclaw.json
Bind: loopback

◇ Health check help ────────────────────────────────╮
│ │
│ Docs: │
│ https://docs.openclaw.ai/gateway/health │
│ https://docs.openclaw.ai/gateway/troubleshooting │
│ │
├────────────────────────────────────────────────────╯
Control UI assets missing; building (ui:build, auto-installs UI deps)…

◇ Optional apps ────────────────────────╮
│ │
│ Add nodes for extra features: │
│ - macOS app (system + notifications) │
│ - iOS app (camera/canvas) │
│ - Android app (camera/canvas) │
│ │
├────────────────────────────────────────╯

◇ Control UI ───────────────────────────────────────────────────────────────────────────╮
│ │
│ Web UI: http://127.0.0.1:18789/ │
│ Gateway WS: ws://127.0.0.1:18789 │
│ Gateway: not detected (gateway closed (1008): invalid connect params: at /client/id: │
│ must be equal to constant; at /client/id: must match a sc…) │
│ Docs: https://docs.openclaw.ai/web/control-ui │
│ │
├────────────────────────────────────────────────────────────────────────────────────────╯

◇ Workspace backup ────────────────────────────────────────╮
│ │
│ Back up your agent workspace. │
│ Docs: https://docs.openclaw.ai/concepts/agent-workspace │
│ │
├───────────────────────────────────────────────────────────╯

◇ Security ──────────────────────────────────────────────────────╮
│ │
│ Running agents on your computer is risky — harden your setup: │
│ https://docs.openclaw.ai/security │
│ │
├─────────────────────────────────────────────────────────────────╯

◆ Enable bash shell completion for openclaw?
│ ● Yes / ○ No

出てるエラーは典型的な「トークン不一致」
ここだけ直せば Gateway ⇄ クライアント(onboard/Control UI)が繋がるはず。

いま起きてること(結論)

ログにこうある:

  • unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
  • gateway closed (1008): unauthorized
  • invalid connect params: at /client/id ...

つまり、

  1. Gateway側が要求するトークンgateway.auth.token
  2. クライアント側が持ってるトークンgateway.remote.token

この2つが一致してない。
オンボード途中で systemd サービス(gateway)を入れたから、「片方だけ新しい設定になった」みたいなズレが起きがち。

まずやること:設定ファイルのトークンを揃える

しかし、まずはYesで先に進めて後でもOK。設定ファイルはログに出てる通り:

/home/mamu/.openclaw/openclaw.json

まず中身確認:

cat ~/.openclaw/openclaw.json | sed -n '1,200p'

そして gateway 周りを探す(grepでOK):

grep -n '"gateway"' -n ~/.openclaw/openclaw.json
grep -n 'auth' ~/.openclaw/openclaw.json
grep -n 'remote' ~/.openclaw/openclaw.json
grep -n 'token' ~/.openclaw/openclaw.json

理想はこういう状態(概念):

  • gateway.auth.token がある
  • gateway.remote.token がある
  • 両方が完全一致

手で直す(最短)

エディタで開いて:

nano ~/.openclaw/openclaw.json

gateway.auth.token の値をコピって、gateway.remote.token に貼る。
(もし片方しか無いなら、同じ値にする)

直したら:gateway service を再起動

これは user systemd で入ってるので --user で:

systemctl --user daemon-reload
systemctl --user restart openclaw-gateway.service
systemctl --user status openclaw-gateway.service --no-pager -l

ログも確認:

journalctl --user -u openclaw-gateway.service -n 80 --no-pager

接続チェック(ブラウザ不要)

SSHならこれでOK:

pnpm openclaw gateway status
pnpm openclaw doctor

もし疎通だけ見たいなら HTTP 側も:

curl -I http://127.0.0.1:18789/ | head

「/client/id must be equal to constant」について

これはだいたい 接続パラメータ(client id / token / handshake)が想定と違う時に一緒に出る。
トークン揃えて再起動したら まとめて消えることが多い

最後の質問:bash completion は?

Enable bash shell completion for openclaw?

これは YesでOK。危険じゃない。単に補完が効くようになるだけ。
(不安なら No でも動作に影響なし)

Yesで進めると・・・

◇ Enable bash shell completion for openclaw?
│ Yes

◇ Shell completion ────────────────────────────────────────────────────────╮
│ │
│ Shell completion installed. Restart your shell or run: source ~/.bashrc │
│ │
├───────────────────────────────────────────────────────────────────────────╯

◇ Dashboard ready ───────────────────────────────────────────────────────╮
│ │
│ Dashboard link: http://127.0.0.1:18789/ │
│ Copy/paste this URL in a browser on this machine to control OpenClaw. │
│ No GUI detected. Open from your computer: │
│ ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108 │
│ Then open: │
│ http://localhost:18789/ │
│ Docs: │
│ https://docs.openclaw.ai/gateway/remote │
│ https://docs.openclaw.ai/web/control-ui │
│ │
├─────────────────────────────────────────────────────────────────────────╯

◇ Web search (optional) ─────────────────────────────────────────────────────────────────╮
│ │
│ If you want your agent to be able to search the web, you’ll need an API key. │
│ │
│ OpenClaw uses Brave Search for the `web_search` tool. Without a Brave Search API key, │
│ web search won’t work. │
│ │
│ Set it up interactively: │
│ - Run: openclaw configure --section web │
│ - Enable web_search and paste your Brave Search API key │
│ │
│ Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes). │
│ Docs: https://docs.openclaw.ai/tools/web │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯

◇ What now ─────────────────────────────────────────────────────────────╮
│ │
│ What now: https://openclaw.ai/showcase ("What People Are Building"). │
│ │
├────────────────────────────────────────────────────────────────────────╯

└ Onboarding complete. Use the dashboard link above to control OpenClaw.

「ブラウザで開け」ってことですね。
ただし “サーバ側でブラウザを開け” じゃなくて、手元PCのブラウザで開けって案内(SSH接続中だから)。

いまやること(最短)

あなたのローカルPC(SSHしてる側じゃない方)で 別ターミナルを開いてこれ:
ただし、以下を行うのはPowerShellのとき。VS Codeを使うと、VS Code の ポート転送(Remote-SSH)が効いてる状態になる。ありがたい。 18789 → 127.0.0.1:18789 で、プロセスも clawdbot-gateway が掴んでる。

ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108
  • -L 18789:127.0.0.1:18789:サーバの 127.0.0.1:18789 を手元の localhost:18789 にトンネルする
  • -N:ログインシェル開かずにトンネル専用
  • これ実行したターミナルは止まったままで正常(切るまでトンネルが維持される)

次に手元のブラウザで:

  • http://localhost:18789/

開けばOK。

ブラウザ無しで進められる?

ある程度は進められる。(CLIで設定/確認はできる)
でも OpenClaw は「Control UI(ダッシュボード)」で設定・状態確認する導線が太いから、最終的にはブラウザ開いた方がラク

ただし:さっきの “token mismatch” は放置するとダッシュボードが死ぬ

今の “Dashboard ready” が出てても、前に

  • unauthorized: gateway token mismatch
  • invalid connect params ...

が出てました。
これ、UIを開いても Gateway と繋がらず赤くなる可能性が高い。

なので順番は:

  1. まずトンネル掘って http://localhost:18789/ を開く
  2. UI上で「Gatewayが未接続/unauthorized」になってたら、そこで token を揃える(=今の問題の本丸)

しかしブラウザには以下の表示がされエラー。

Control UI assets not found. Build them with `pnpm ui:build` (auto-installs UI deps), or run `pnpm ui:dev` during development.

これは単純に UI(静的ファイル)がまだビルドされてない / 置き場所をGatewayが見つけられてないやつ。
さっきログに「Control UI assets missing; building…」って出てたけど、途中でコケたか、ビルド成果物が想定パスに無いっぽい。

いったんCtrl+Cでウィザードを止める。

ELIFECYCLE  Command failed.

> openclaw@2026.2.4 openclaw /home/mamu/openclaw
> node scripts/run-node.mjs gateway status

🦞 OpenClaw 2026.2.4 (c75275f) — curl for conversations.


gateway connect failed: Error: unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)

Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-02-06.log
Command: /home/mamu/.nvm/versions/node/v24.13.0/bin/node /home/mamu/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Service config looks out of date or non-standard.
Service config issue: Gateway service uses Node from a version manager; it can break after upgrades. (/home/mamu/.nvm/versions/node/v24.13.0/bin/node)
Service config issue: System Node 22+ not found; install it before migrating away from version managers.
Recommendation: run "openclaw doctor" (or "openclaw doctor --repair").
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: stopped (state activating, sub auto-restart, last exit 1, reason 1)
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1008): unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)
Gateway target: ws://127.0.0.1:18789
Source: cli --url
Config: /home/mamu/.openclaw/openclaw.json

Service is loaded but not running (likely exited immediately).
File logs: /tmp/openclaw/openclaw-2026-02-06.log
Logs: journalctl --user -u openclaw-gateway.service -n 200 --no-pager

Port 18789 is already in use.
- pid 2128 mamu: clawdbot-gateway (127.0.0.1:18789)
- Another process is listening on this port.
Listening: 127.0.0.1:18789
Other gateway-like services detected (best effort):
- clawdbot-gateway.service (user, unit: /home/mamu/.config/systemd/user/clawdbot-gateway.service)
Cleanup hint: systemctl --user disable --now openclaw-gateway.service
Cleanup hint: rm ~/.config/systemd/user/openclaw-gateway.service

Recommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).
If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).

Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting

> openclaw@2026.2.4 openclaw /home/mamu/openclaw
> node scripts/run-node.mjs dashboard

🦞 OpenClaw 2026.2.4 (c75275f) — Think different. Actually think.

Dashboard URL: http://127.0.0.1:18789/
Copy to clipboard unavailable.
No GUI detected. Open from your computer:
ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108
Then open:
http://localhost:18789/
Docs:
https://docs.openclaw.ai/gateway/remote
https://docs.openclaw.ai/web/control-ui

原因が判明

/home/mamu/.nvm/versions/node/v24.13.0/bin/node /home/mamu/openclaw/dist/index.js gateway --port 18789

🦞 OpenClaw 2026.2.4 (c75275f) — Siri's competent cousin.

14:36:37 [canvas] host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/mamu/.openclaw/canvas)
14:36:37 Gateway failed to start: another gateway instance is already listening on ws://127.0.0.1:18789
If the gateway is supervised, stop it with: openclaw gateway stop
14:36:37 Port 18789 is already in use.
14:36:37 - pid 2128 mamu: clawdbot-gateway (127.0.0.1:18789)
14:36:37 - Another process is listening on this port.
14:36:37 Gateway service appears enabled. Stop it first.
14:36:37 Tip: openclaw gateway stop
14:36:37 Or: systemctl --user stop openclaw-gateway.service

結論は同じで、18789 を掴んでるのが “pid 2128 clawdbot-gateway”。OpenClaw は悪くない、席が埋まってるだけ。

対処:18789 を奪っている旧 clawdbot-gateway を退場させる

1) まず「いま掴んでる犯人」を止める

原因は pid=2128 の clawdbot-gateway が 18789 を LISTEN していること。
まずはプロセスを止めて、ポートが空くか確認する。

# 18789 を掴んでるPID確認(すでに分かってるなら省略OK)
ss -ltnp | grep 18789

# 旧ゲートウェイを停止
kill 2128

# 空いたか確認
ss -ltnp | grep 18789 || echo "OK: 18789 freed"

ここで OK: 18789 freed になれば第一段階クリア。

2) 重要:止めても「復活」するなら、起動元が systemd だ

kill しても数秒〜数十秒で同じPID/別PIDが復活する場合、
旧clawdbotが user systemd で常駐する設定になってる。

clawdbot系のユニットを洗い出す

systemctl --user list-units --type=service | grep -Ei 'clawdbot|claw'
systemctl --user list-unit-files | grep -Ei 'clawdbot|claw'

見つかった clawdbot-*.service(またはそれっぽい)を stop + disable

# 例:clawdbot-gateway.service があった場合
systemctl --user disable --now clawdbot-gateway.service

「disable」は再起動後も復活しないようにするために必須。

3) OpenClaw 側を起動する

旧が退場し、18789 が空いたら OpenClaw を起動する。

systemd(ユーザーサービス)で起動する場合

systemctl --user restart openclaw-gateway
systemctl --user status openclaw-gateway --no-pager

手動で起動して確認する場合

/home/mamu/.nvm/versions/node/v24.13.0/bin/node \
  /home/mamu/openclaw/dist/index.js gateway --port 18789

最後に、ちゃんと OpenClaw が掴んでるか確認。

ss -ltnp | grep 18789

期待するのは users:(("node",pid=...)) など OpenClaw側のプロセスが表示されること。

4) SSH環境ならダッシュボードはポートフォワードで開く

OpenClaw は 127.0.0.1:18789 に bind しているので、SSH越しならローカルに転送してブラウザで開く。

ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108

ブラウザで:

  • http://localhost:18789/

ワンポイント(記事の締めに効く)

  • OpenClawは悪くない:起動失敗は「既に同じ席(18789)が埋まっている」だけ
  • killは応急処置:根治は systemctl --user disable --now <旧サービス>
  • UIビルド(pnpm ui:build)は無害:ただの静的ファイル生成。今回の本質とは別問題

旧clawdbotを残したい場合(共存)

  • OpenClaw を別ポートにする(例:18889)
  • ダッシュボードのURLも変わる
# OpenClawを別ポートで起動する例
systemctl --user stop openclaw-gateway
openclaw configure --section gateway   # ここでportを18889に変更、または設定ファイル編集
systemctl --user restart openclaw-gateway

旧clawdbotはもう要らない場合(駆逐)

  • clawdbot 系 user service を disable
  • 必要なら ~/.clawdbot は symlink なので消す先は ~/.openclaw 側を誤爆しないよう注意(ここ重要)

ビルドは必要?

ビルドは “先でも後でもいい”。ただし今回みたいにハマりやすいから、手順としてはこうが一番安全。

いちばん安全な順番(おすすめ)

  1. まずポート競合を解消(clawdbot-gateway を止める/disable)
  2. OpenClaw の gateway を起動して、18789 が OpenClaw になったのを確認
  3. それから UI が無いと言われたら pnpm ui:build(必要なときだけ)

理由:UIビルドしても ポート競合は絶対に直らない
だから先にビルドしても「時間を溶かすだけ」になりがち。

じゃあビルドが「必要」なのはいつ?

ブラウザで http://localhost:18789/ を開いたときに

  • Control UI assets not found...
    みたいに言われたとき だけ 必要。

その場合だけ:

cd ~/openclaw
pnpm ui:build

先にビルドしても害はある?

基本ない(静的ファイル生成)。
ただし副作用として

  • 依存関係インストールで時間かかる
  • 余計なログが増える

くらい。今回の根本原因(18789をclawdbotが握ってる)にはノータッチ。

例外:開発してるなら先に pnpm build

もし dist/ 自体を作り直したい(コード変更した)なら

  • pnpm build(全体ビルド)
  • pnpm ui:build(UIだけ)

の順でやるのはアリ。でも、普通に動かすだけなら リリース版distがある時点で不要

実は再起動したらなおった話

朝になって状況を確認したところ、結論として OpenClaw 側は正常に起動していました。
昨日の「動かない」「ポートが埋まってる」系のエラーは、OpenClaw 自体の不具合ではなく “誰が 18789 を掴んでいるか” が入れ替わっただけでした。

✅ 朝の確認結果

1) 実際に動いているプロセス

ps で見ると、起動していたのは openclaw-gateway

ps aux | egrep 'clawdbot|openclaw' | grep -v grep

mamu 2092 0.7 0.3 1774048 367068 ? Ssl 09:52 0:15 openclaw-gateway
mamu 13368 0.0 0.0 8006220 63216 ? Sl 10:06 0:00 node /home/mamu/openclaw/node_modules/.pnpm/oxlint@1.43.0_oxlint-tsgolint@0.11.4/node_modules/oxlint/bin/oxlint --lsp
mamu 13374 0.0 0.0 5462888 72772 ? Sl 10:06 0:00 node /home/mamu/openclaw/node_modules/.pnpm/oxfmt@0.28.0/node_modules/oxfmt/bin/oxfmt --lsp
mamu 19904 3.8 0.1 4885056 197072 ? Sl 10:14 0:31 /home/mamu/.antigravity-server/bin/1.16.5-1504c8cc4b34dbfbb4a97ebe954b3da2b5634516/extensions/antigravity/bin/language_server_linux_x64 --enable_lsp --extension_server_port 45703 --csrf_token 1dc5c615-f509-4c79-bde9-f514c2802942 --random_port --workspace_id file_home_mamu_openclaw --cloud_code_endpoint https://daily-cloudcode-pa.googleapis.com --app_data_dir antigravity --parent_pipe_path /tmp/server_b643cbeab978fd53

つまり 今 18789 を掴んでいるのは OpenClaw 本体

2) systemd の状態(ユーザーサービス)

systemctl --user でも openclaw-gateway が running になっている。

systemctl --user list-units --type=service --state=running | egrep 'clawdbot|openclaw'

openclaw-gateway.service loaded active running OpenClaw Gateway (v2026.2.4)

ここで重要なのがこれ:

systemctl --user list-unit-files | egrep 'clawdbot|openclaw'

clawdbot-gateway.service enabled
openclaw-gateway.service enabled

clawdbot-gateway のサービス定義は残ってる(enabled)
でも、実際に走っているのは openclaw-gateway
つまり「今は無駄に動いてはいない」けど、“地雷(将来また復活して競合する可能性)” は残っている状態です。

✅ なぜ “手動起動が失敗する” のか(正常な理由)

昨日は clawdbot-gateway が 18789 を占有していたので、OpenClaw が起動できずエラーになった。
しかし今日は、PC再起動後に openclaw-gateway が先に立ち上がっていた

その状態でこれをやると:

node ... dist/index.js gateway --port 18789

当然、すでに gateway は動いているので、

  • 二重起動(gateway already running)
  • ポート使用中(Port 18789 is already in use)

で弾かれる。これは 異常ではなく正常

つまり「起動できない」のではなく「起動しようとしても、すでに起動しているから止められた」だけ。

付録:clawdbot-gateway の“地雷”を除去する(任意)

今は openclaw-gateway が掴んでて正常だけど、将来また clawdbot が起動してポート競合する可能性がある。
だから記事的にはこう締めるのもアリ:

“今は正常。でも clawdbot の unit が enabled のままなので、再び競合するなら disable しておくのが安全。”

systemctl --user disable --now clawdbot-gateway.service
systemctl --user daemon-reload
systemctl --user reset-failed

〆(まとめ文の例)

UI assets エラーが出たときだけ pnpm ui:build

朝になって再起動したら正常化していた

昨日は clawdbot-gateway が 18789 を掴んでいた

今日は openclaw-gateway が起動済みで、手動起動が「二重起動」で弾かれただけ

次に確認すること(ゴールはここ)

次はこれだけでOK。

✅ ダッシュボードが開けるか

SSH で触っているなら、ローカルPC側からトンネルして開く。

ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108

そしてブラウザで:

  • http://localhost:18789/

もしここでまた UI エラーが出たら?

以前出たこれ:

Control UI assets not found. Build them with pnpm ui:build

この場合だけ、サーバー側(openclaw のディレクトリ)で

pnpm ui:build
systemctl --user restart openclaw-gateway

でOK。
(UI assets は “Web画面の静的ファイル” なので、Gateway 本体とは別問題)

画面は開けてるけど、Web UI が Gateway の WebSocket に認証できてない状態です。

スクショの赤いエラーが核心:

unauthorized: gateway token missing (Open the dashboard URL and paste the token in Control UI settings)

つまり 「トークンが“無い” or “違う”」 ので Health が Offline のまま。

まず結論:やることは「GatewayトークンをUIに貼る」だけ

OpenClaw はデフォで Token認証
そのトークンはサーバ側の ~/.openclaw/openclaw.json に入ってるはず。

1) サーバ側でトークン確認(SSH先)

cat ~/.openclaw/openclaw.json | sed -n 's/.*"token": *"\([^"]*\)".*/\1/p'

もし jq 入ってるならこっちが安全:

jq -r '.gateway.auth.token' ~/.openclaw/openclaw.json

jqに関しては以下の記事をどうぞ

ここで出た文字列が Control UI に貼るべきトークン

2) ブラウザ側で

  • Gateway Token に貼る
  • Connect を押す

これで赤い token missing が消えるのが正常。

もし貼ったのにダメな時(よくあるパターン)

A) “token missing” → “token invalid / unauthorized”

→ トークンが違う(別プロセス/別設定のtoken見てる)可能性。

確認コマンド:

systemctl --user status openclaw-gateway --no-pager -l
cat ~/.openclaw/openclaw.json | head

B) そもそも token がファイルに無い

→ UIの赤枠に書いてる通り 生成して入れる

赤枠に出てるコマンドがこれ:
openclaw doctor --generate-gateway-token

もし pnpm 経由で動かしてるなら:

pnpm openclaw doctor --generate-gateway-token

生成したやつをUIへ → Connect。

ちなみに “Password (not stored)” は?

今は Token auth だから基本いらん。
パスワード方式に切り替えてない限り空でOK。

Password (not stored) の正体

これは Control UI(ブラウザ)→ Gateway へ接続するときの別ルートの認証で、環境によっては「共有パスワード」を使う運用もできる、ってだけ。

  • Token(gateway token)方式
    → 今回の状態。Control UI の Gateway Token を入れれば接続できる。
    → Password欄は空でOK。
  • Password方式に切り替えた場合(明示的に設定した場合)
    → Tokenじゃなく Password を要求する構成になることがある。
    → そのときだけこの欄に入れる。

しかも UI に (not stored) って書いてある通り、ブラウザ側に保存されない前提なので、入れても「毎回聞かれる」系になりやすい。
だから普通は Token が楽。

つまり今回のベストプラクティス

  • Gateway 側は systemd で常駐(openclaw-gateway.service)
  • Control UI 側は Gateway Token だけ設定
  • Password は触らない(空でOK)

これで Health OK / Connected になってれば完了。

ここまでで Gateway 自体は正常稼働しているのに、ターミナルで openclaw が叩けず混乱していた。原因は単純で、OpenClaw の Gateway は systemd で起動している一方、CLI(openclaw コマンド)をまだインストールしていなかっただけだった。
対処は npm install -g .(リポジトリから導入)で openclaw コマンドを有効化し、openclaw tui で接続すればよい。トークン認証を有効にしている場合は openclaw tui --url ws://127.0.0.1:18789 --token <token> のように明示して接続する。

A) いまのリポジトリ(~/openclaw)を “そのままCLIとして” グローバル導入(おすすめ)

「今ビルドしてるその実体を openclaw コマンドにする」方法。

cd ~/openclaw
npm install -g .
hash -r
command -v openclaw
openclaw --version
mamu@evo-x2:~/openclaw$ npm install -g .

added 1 package in 245ms
mamu@evo-x2:~/openclaw$ hash -r
mamu@evo-x2:~/openclaw$ command -v openclaw
/home/mamu/.nvm/versions/node/v24.13.0/bin/openclaw
mamu@evo-x2:~/openclaw$ openclaw --version
2026.2.4

B) npmで配布されてる openclaw を普通に入れる

「配布版を入れる」方法。

npm install -g openclaw
hash -r
command -v openclaw
openclaw --version

command -v openclaw でパスが出たら勝ち。

(macOSの手順でも npm install -g openclaw@... の形で入れる前提になってるので、思想としてはこれが正攻法。)

まず一発:動作確認セット(おすすめ)

1) 何が動いてるか確認

openclaw --help

→ ここでサブコマンド一覧が出れば、CLIインストール成功の証拠。

2) Gatewayに繋がるか(最重要)

openclaw tui

今の状態は 「Gateway(器)は動いてるけど、脳みそ(モデル)に繋ぐ“認証”が未設定で、tui が返事待ちのまま固まってる」 って状況っぽいです。

実際、オンボード時点でもこう言われてました:

  • No auth configured for provider "anthropic". The agent may fail until credentials are added.
    これがそのまま tui の “pondering…” に出てる感じ。

そして OpenClaw のウィザード仕様でも、Anthropic は APIキー以外に「Claude Code のOAuth」や「setup-token貼り付け」が選べる、と明記されてる。

まず結論:成功? → Gatewayは成功。LLMはまだ

status はこれ:

  • openclaw-gateway.service: active (running)
  • その後に token_missingwebchat connected ✅(トークン入れたから繋がった)

なので Gateway運用としては成功
ただし LLM(Claude)を使うための“Anthropic 認証”は別腹で、そこが未完了。

いま tui が返事しない理由

tui で

「今使っているモデル名を教えて」

って聞いて 2~3分 “pondering” は、だいたいこのどれか:

  1. Anthropicの認証が無い(いちばん濃厚)
  2. デフォルトモデルが Anthropic のままなのに、認証だけ無い
  3. そもそもモデル解決に失敗してる(unknown のまま)

ウィザード仕様にも「モデルチェックで“missing auth”警告を出す」ってあるので、それが現実化してるだけ。

じゃあどう直す?(ターミナル最短ルート)

意図は「APIキーじゃなくて Auth(Claude Code 側の認証)でやりたい」なので、やることはこれ。

A) Claude Code のOAuth認証を流用する(おすすめ)

OpenClaw は Linux/Windows だと ~/.claude/.credentials.json を再利用できる、とウィザードに書いてある。

つまり:

  1. Claude Code がそのマシンでログイン済みになってることを確認
  2. その上で OpenClaw 側に Anthropic OAuth を使う設定を入れる

どのコマンドで設定するかは環境で多少違うので、まずは OpenClaw が用意してる導線を使うのが安全:

  • openclaw configure(対話式で Models/Auth 周りを触る)
  • もし項目指定できるなら openclaw configure --section models / --section auth

※この “configure” という入口が公式に存在するのは、オンボード画面にも出てた通り(「後で openclaw configure で変えられる」)。

B) setup-token を貼る方式(SSHでも確実)

ウィザード仕様にあるやつ:

  • claude setup-token をどこかの端末で実行
  • 出てきた token を貼る(名前は空でもOK)

これができると APIキー無しでも Anthropic が通るルートになり得る。

mamu@evo-x2:~/openclaw$ openclaw configure

🦞 OpenClaw 2026.2.4 (c75275f) — I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞                    
 
┌  OpenClaw configure
│
◇  Existing config detected ─────────╮
│                                    │
│  workspace: ~/.openclaw/workspace  │
│  gateway.mode: local               │
│  gateway.port: 18789               │
│  gateway.bind: loopback            │
│                                    │
├────────────────────────────────────╯
│
◆  Where will the Gateway run?
│  ● Local (this machine) (Gateway reachable (ws://127.0.0.1:18789))
│  ○ Remote (info-only)

この画面なら 順調に“設定画面に入れてる”=CLIもGatewayも見えてる 状態。
Gateway reachable (ws://127.0.0.1:18789) が出てる時点で、接続面は勝ち確。

ここは Local のまま Enter でOK(Remote は「別ホストのGatewayに繋ぐ時」だけ)。

ここから先:目的別に進め方が変わる

目的A:とにかく tui で喋れるようにしたい(最短)

Model/Auth の設定まで一気に進める

この後たぶん「Model/auth provider」や「Default model」みたいな項目が出てくるから:

  1. provider は Anthropic を選ぶ(デフォルトが opus-4-6 ならなおさら)
  2. Auth は “API key” じゃなく “Auth / OAuth / Claude Code credentials” 系を選ぶ
    • 例:~/.claude/.credentials.json を使う、とか
    • もしくは claude setup-token の token を貼る方式

ここを通せば、openclaw tui の “pondering…” が止まって返事が返るようになる。

目的B:記事として映える「詰まった→直った」を作りたい

  • “Gateway reachable” が出てる(GatewayはOK)
  • 次で “No auth …” が出る(詰まりポイント)
  • 認証入れたら tui が返事する(復活ポイント)

つまり記事の構成は:

  1. Gateway疎通OK
  2. でもモデル認証が無いと tui は沈黙する
  3. 認証を入れると復活(脳みそがClaudeだと表示できる)

いまこの画面での答え

「Where will the Gateway run?」

Local(このまま)でOK。
SSHポートフォワードでブラウザも見れてるし、Gatewayはすでに user service で動いてる。
ここでRemoteにする理由はない。

│
◇  Where will the Gateway run?
│  Local (this machine)
│
◆  Select sections to configure
│  ● Workspace (Set workspace + sessions)
│  ○ Model
│  ○ Web tools
│  ○ Gateway
│  ○ Daemon
│  ○ Channels
│  ○ Skills
│  ○ Health check
│  ○ Continue

ここでのおすすめ手順(最短で tui 復活)

1) ○ Model を選んで Enter

  • いま openclaw tui が「pondering…」で止まってる原因は モデル認証が無い/モデルが確定してない ことがほぼ確定。
  • だからまず Model を通して “脳みそ” を入れる。

2) Model 内でやること(方針)

  • 「Anthropic(Claude)」を使うなら:
    • “API key” を要求する流れに行ったら、本来は不要なはず なので、そこで “既存の認証(Claude Code / Auth / Credentials)を使う” 系を探す。
    • それが見当たらない・選べない場合は、OpenClaw側が「API key前提の統合」になってる可能性があるので、その時点で回避策(OpenRouter経由、または別provider)を打つのが早い。

「Continue」はいつ押す?

Model を設定してからが気持ちいい。

  • 「Continue」は“残りのセクションはあとでいいや”って時に進むやつ。
  • いま進んでも動くけど、tui が止まったままだと気持ち悪い。

Gateway は起動してる(ws://127.0.0.1:18789 reachable)。
でも tui が返事しないのは “Gateway” の問題じゃなくて Model(認証)が未設定だった。

◇  Select sections to configure
│  Model
│
◆  Model/auth provider
│  ● xAI (Grok) (API key)
│  ○ OpenAI
│  ○ Anthropic
│  ○ MiniMax
│  ○ Moonshot AI (Kimi K2.5)
│  ○ Google
│  ○ OpenRouter
│  ○ Qwen
│  ○ Z.AI (GLM 4.7)
│  ○ Copilot
│  ○ Vercel AI Gateway
│  ○ OpenCode Zen
│  ○ Xiaomi
│  ○ Synthetic
│  ○ Venice AI
│  ○ Cloudflare AI Gateway
│  ○ Skip for now

ここは “Anthropic” を選べばOK。で、「APIキーじゃなくてAuthでやりたい」は setup-token 方式がそれ。ANTHROPIC_API_KEY は要らん。

いまの画面(Model/auth provider)は何を選ぶ?

  • Claude(=脳みそをClaudeにしたい)なら → Anthropic を選択
  • xAI (Grok) はGrokなので目的と違う
  • もし「Claude Code(Max/Pro)でログイン済みの認証」をそのまま使いたいなら、公式のAnthropic統合(setup-token)でもいけるし、Claude Max/Pro + Claude Code CLI を前提にした “Claude Max API Proxy” って選択肢もある(これはコミュニティ扱い)。
◇  Select sections to configure
│  Model
│
◇  Model/auth provider
│  Anthropic
│
◆  Anthropic auth method
│  ● Anthropic token (paste setup-token) (run `claude setup-token` elsewhere, then paste the token here)
│  ○ Anthropic API key
│  ○ Back

上は「APIキーじゃなくてAuthでやる」ルートそのもの

ここでやること

  1. 別ターミナル(または手元PC側)で
claude setup-token
  1. 出てきた setup-token をコピペ
  2. いまの画面の
    Anthropic token (paste setup-token)
    に貼り付けて進む

どこで claude setup-token を叩く?

  • SSH接続中でもOK(そのSSH先に claude コマンドが入ってれば)
  • もしSSH先に claude が無い / ログインしてないなら:
    • ローカル(あなたのWindows側)で claude setup-token を実行 → トークンだけSSH先のOpenClawに貼る
      って流れでもOK

これを選ぶと ANTHROPIC_API_KEY は要る?

要らない。
(「Anthropic API key」を選んだ場合だけ必要)

OpenClawはAnthropicを APIキー でも使えるが、今回は Claude Code の setup-token を貼るだけで認証できた。

◇  Anthropic auth method
│  Anthropic token (paste setup-token)
│
◇  Anthropic setup-token ──────────────────────╮
│                                              │
│  Run `claude setup-token` in your terminal.  │
│  Then paste the generated token below.       │
│                                              │
├──────────────────────────────────────────────╯
│
◆  Paste Anthropic setup-token

ここは上記のclaude setup-token で出た“setup-token”をここに貼るだけでOK。

ちなみに今回はWindows環境にもclaude codeがインストールしてあったので、PowerShellで実行し、ブラウザ認証になり、PowerShellにトークンが表示されました。

◇  Paste Anthropic setup-token
│  sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
│
◆  Token name (blank = default)
│  default

いま出てる

  • Token name (blank = default)
  • default

は「そのトークンをOpenClaw側で保存するときの“ラベル名”」みたいなもん。

ここはどうする?

  • 迷ったら 空欄のまま Enter(=default扱い)でOK
  • もし複数トークン(仕事用/個人用/検証用)を使い分けたいなら
    anthropic-win とか claude-code とか、あとで分かる名前にすると便利

どっちでも動作には影響ほぼなし(“どのトークンを参照するか”の管理名)

claude setup-tokenAPIキーじゃなく“Claude Code側のログイン認証”でトークンを発行する

「SSH先のLinuxにClaude Codeが無くても、Windows側PowerShellで発行→貼り付けでOK」

◇  Token name (blank = default)
│
│
◆  Anthropic OAuth models
│  ◻ anthropic/claude-haiku-4-5 (Claude Haiku 4.5 (latest) · ctx 195k · reasoning)
│  ◻ anthropic/claude-opus-4-5
│  ◼ anthropic/claude-opus-4-6 (Claude Opus 4.6 · ctx 195k · reasoning)
│  ◻ anthropic/claude-sonnet-4-5

4.6にチェック入ってる=そのトークン(OAuth / setup-token)で Opus 4.6 が使える状態になってる。このモデルを選択します。

◇  Anthropic OAuth models
│  anthropic/claude-opus-4-6
Updated ~/.openclaw/openclaw.json
│
◆  Select sections to configure
│  ● Workspace (Set workspace + sessions)
│  ○ Model
│  ○ Web tools
│  ○ Gateway
│  ○ Daemon
│  ○ Channels
│  ○ Skills
│  ○ Health check
│  ○ Continue

まずは Continue で設定ウィザードを終わらせる

今の画面は「他の項目も設定しますか?」って聞いてるだけ。

  • Workspace は既に “Workspace OK” 出てたなら基本触らなくていい
  • 迷ったら 何も選ばず Continue(=終了)でOK
◇  Select sections to configure
│  Continue
Missing Control UI assets. Build them with `pnpm ui:build` (auto-installs UI deps).
│
◇  Control UI ────────────────────────────────────╮
│                                                 │
│  Web UI: http://127.0.0.1:18789/                │
│  Gateway WS: ws://127.0.0.1:18789               │
│  Gateway: reachable                             │
│  Docs: https://docs.openclaw.ai/web/control-ui  │
│                                                 │
├─────────────────────────────────────────────────╯
│
└  Configure complete.

セットアップ完了!

しかしエラー扱いで合ってる(UIが表示できない=Control UI側は“壊れてる/未完成”扱い)。
原因はシンプルで、Control UI の静的ファイル(dist/control-ui)がまだ無い状態だから。

なので結論:

  • ブラウザでその文言が出てるならpnpm ui:buildやらんといかん
  • すでに pnpm ui:build してるのに出る → “置き場所が違う / gatewayが古いものを参照してる / ビルド成果物が消えた”系

一度ビルドしてるログがあるから、まずは「今どの状態か」を最短で潰す。

まず、やるべき最短手順(これで9割終わる)

cd ~/openclaw
pnpm ui:build
systemctl --user restart openclaw-gateway

そのあと ハードリロード(キャッシュ残りがち):

  • Windowsブラウザなら Ctrl + F5(or Ctrl+Shift+R

まだ “Missing assets” が出るときの確認(1分で判定)

1) ビルド成果物が本当にあるか

ls -la ~/openclaw/dist/control-ui/ | head

index.htmlassets/ が見えればビルド成果物はOK。

2) gateway が “その成果物” を見に行ってるか(ログ確認)

journalctl --user -u openclaw-gateway -n 80 -o cat --no-pager

もしここに Control UI assets not found がまだ出るなら、参照パスがズレてる可能性が高い。

なんで“エラーじゃないこともある”って話が出るの?

CLIの openclaw configure が言う “Missing Control UI assets …” は、
「UIはオプションだから、無くてもGateway自体は動くよ」って意味で警告っぽく出ることがある。

でも今回は ブラウザがその文言しか出してないUIとしては致命的なので、ユーザー体験的には完全にエラー。

Gateway自体は動いていても、Control UI は別物。UIの静的ファイルが未ビルドだとブラウザは “Missing assets” で止まる。対処は pnpm ui:build → gateway再起動。

次に:運用者っぽい“管理コマンド”

OpenClaw は「Gateway(常駐)」と「CLI/TUI(操作側)」に分かれている。
まずは“裏で動いてる証明”を取る。

3) Gatewayの状態(CLI側から見たやつ)

openclaw gateway status

4) 二重起動や変なプロセスを片付けるやつ

openclaw gateway stop

重要:Control UI の “assets not found” が出たら

今回のように Configure complete の直後でも、Control UI が未ビルドだとこの警告が出る。

必要なときだけこれを一回やればOK:

cd ~/openclaw
pnpm ui:build
systemctl --user restart openclaw-gateway

すでに pnpm ui:build 済みなら、ここは再実行不要。
「UIが開けてるなら勝ち」でOK。

“設定入れていく”なら(次のステップ)

5) 対話で設定を進める(モデル/認証/WEB検索など)

openclaw configure

今回ここで、Anthropic を “setup-token(Auth方式)” で入れた
「APIキー直貼りじゃなく、ブラウザ認証→トークン貼り付け」でいけるのがポイント。
(WindowsのPowerShellで claude setup-token → ブラウザ認証 → token発行 → Linux側に貼り付け、って流れ)

“設定ファイルを見る”なら

6) いまの設定をその場で確認

cat ~/.openclaw/openclaw.json

ここに anthropic/claude-opus-4-6 が入ってれば「脳みそはClaude」演出は完成。

おすすめ順(迷ったらこれ)

  1. openclaw tui (主役:対話できるか確認)
  2. openclaw gateway status (裏で動いてる証明)
  3. openclaw configure (次回以降の布石:モデル/認証/ツール)
  4. cat ~/.openclaw/openclaw.json (設定の実体を見せる)

ひとことだけ:今回のログに沿った補足

Missing Control UI assets... は“設定失敗”じゃなくて“UIが未ビルドなだけ”。
UIが開けてるなら「警告だけで実害なし」もあり得るし、開けなければ pnpm ui:build で終わる。

さきほどエラーになった動作確認(最短)

openclaw tui

TUIが立ち上がったら、次を入力:

今使っているモデル名を教えて

すると、こう返ってくる:

anthropic/claude-opus-4-6 を使っています。

画面下のステータスにも anthropic/claude-opus-4-6 と出れば、
「OpenClaw ↔ Gateway ↔ Claude(Auth)」の経路が全部つながった証拠

次にやるなら(おすすめ順)

  1. Gatewayが裏で動いてる証明
openclaw gateway status
  1. 設定の実体を見せる(記事向け)
cat ~/.openclaw/openclaw.json
  1. Control UI assets の警告について
  • TUIが動いてるなら必須ではない
  • ブラウザ側のUIを快適にしたいときだけ:
cd ~/openclaw
pnpm ui:build
systemctl --user restart openclaw-gateway

トークン消費は変わる?

結論:トークンを食うのは基本 Claude 側。openclaw 自体が“勝手に”トークンを増やすというより、何をどれだけ Claude に送るかで増減する。

ただし、openclawが間に入ることで「増える/減る」要素はある。

増えやすいパターン(openclawが原因になりがち)

  • セッション履歴を長く持っていて、毎回それをまとめて投げてる
  • ツール結果(長いログ/JSON/HTML)をそのままLLMに食わせてる
  • “思考モード/推論” が強いやつ(reasoning系)で、内部推論が厚い
  • プロンプトに “システム指示+スキル説明+環境情報” が乗ってる

→ つまり「openclawが動いてるから」じゃなくて、openclawの運用スタイルが“LLMに渡す情報量”を左右する

減らせるパターン(openclawがうまく働く)

  • 逆に、openclaw側で 履歴を要約してから投げる
  • ツール結果を 必要部分だけ抽出して投げる
  • セッションを用途ごとに分けて コンテキストを汚さない

「消費に違いがある」と感じるポイント

同じ Claude を使ってても、

  • Claude Code(claudeコマンド) は “開発向けの流儀”(ファイル参照やツール呼び出しが多い)
  • openclaw は “エージェント運用の流儀”(セッション/ツール/チャネル/スキル)

で、投げ方が違う=トークンの出方も変わりうる

すぐ確認できること

いま openclaw tui の下に出てる

tokens 0/200k

これが会話を続けると増える。
増えるのは「openclawが動いたから」じゃなくて、Claudeに投げた入力+Claudeが返した出力が積み上がってる。

OpenClawは“器(手足)”、Claudeは“脳”。コスト(トークン)を決めるのは、OpenClawがClaudeにどれだけ情報を渡すか。

タイトルとURLをコピーしました