「AIに『やり方』を聞く時代は終わりました。これからはAIに『やっていただく』時代です。」
今、GitHubで大きな注目を集めているOSS、「OpenClaw(旧Clawdbot)」をご存知でしょうか。次から次へと名前の変更があったのでインストールしなおすことにしました。
Clawdbot(openclaw)インストール全手順|Node 24+Claude OAuth同期の実機検証 | 気まぐれブログ
簡単に言えば、これは「あなたのPCの中に住む優秀な執事」です。SlackやDiscordから話しかけるだけで、PC内のファイルを操作したり、サーバーを管理したり、Web上の情報を集めたりと、あらゆるタスクを自律的に代行してくれます。
最大の特徴は、クラウドサービスではなく「ローカルで動く」こと。自分のデータは自分の手元に置いたまま、信頼できるAIパートナーとの協業環境を構築できるのです。
本記事では、このOpenClawのインストール方法について解説します。インストールするOSはUbuntu25.04とします。さらにSSH接続したリモートPCです。
前提条件
- OS: Ubuntu 25.04(SSH接続したリモートPC)
- Node.js: v24系
- 認証: Claude Code の setup-token(APIキー不要)
ゴール
openclaw tui で Claude Opus 4.6 と対話できる状態にする。
本記事の流れ
- Phase 1: インストールとビルド — clone → pnpm → build
- Phase 2: オンボード開始 — セキュリティ確認 → QuickStart → clawdbot→openclaw 移行
- Phase 3: オンボード設定 — Model/Auth/Channel/Skills の選択
- Phase 4: トークン不一致との戦い — token mismatch → ポート競合 → clawdbot-gateway 退場
- Phase 5: 翌朝の解決 — 再起動で正常化、地雷除去
- Phase 6: CLI導入と認証設定 — npm install -g → openclaw configure → setup-token
- Phase 7: 動作確認と仕上げ — ui:build → tui で対話成功
Phase 1: インストールとビルド
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 install → ui:build → build まで 成功。これは「意味不明でやってる」どころか、ログ的にはかなり綺麗に進んでる部類。
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)
Phase 2: オンボード開始
ビルド済みだから、次は 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 を最初に(勝手に動かさない)
次にやること(順番これ)
- onboarding 画面で Yes
- 終わったら
pnpm openclaw gateway status systemctl --user status openclaw-gateway.service --no-pager - 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。
Phase 3: オンボード設定
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
ブラウザのコマンドは必須ではない(Phase 2 で解説済み)。手動でURLを開けばOK。Dashboard URL は http://127.0.0.1:18789/?token=... の形式で出る。
「Model/auth provider」って何?(Codex / Claude Codeの設定とは別)
ここで選ぶのは OpenClawが問い合わせる“LLMの供給元”です。
- Claude Code や Codex は「別の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で完走 → その後に設定が一番ミスりにくい。
次の一手(おすすめ手順)
- QuickStartのまま進める(Loopback + Token で正解。外に出さないのが正義)
- Provider は Skip for now(まず起動確認)
- オンボードが終わったら、次を実行して状況を見る
pnpm openclaw gateway statuspnpm 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のまま次へが最短で安全。
でも「思想」を入れるなら
もし “後で迷いたくない” なら、provider別のフィルタ選びは前述の「パターンA/B/C」と同じ発想。Codex なら openai-codex、Claude Code なら anthropic、ローカルQwen なら openai(互換エンドポイント)が近い。
ただし一覧に qwen が無いので、ローカルQwenは「openai互換として繋ぐ」前提になる。
じゃあ今回はどうする?
「まず起動させたい」「設定は後で詰めたい」→ All providers のまま進めるのが最短で安全。フィルタは後からいくらでも変えられる(設定ファイル ~/.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
理由:未認証ならどうせ呼べないし、後で変えられる。“起動優先ならKeep current” が正解。
ただし:後で困るパターンだけ先に潰す
認証ルートの選び方は前述の「パターンA/B/C」参照。ここでの優先順位だけ書くと:
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の稼働確認が先
## その次にやること("動いたか"確認)
オンボードを最後まで進めたら、Phase 2 と同じ `pnpm openclaw gateway status` / `pnpm openclaw doctor` で確認。ブラウザは SSH 運用では不要(見たい場合は後述の SSH ポートフォワードで)。
## 「じゃあモデル認証はいつやる?」
起動確認できた後でOK。順番は **Skip for now → gateway確認 → 認証ルート決定**(前述のパターンA/B/C)。
## いまの画面で迷うポイントだけ先に言っとく
- **Telegram**: ほぼ確実に Bot token 要求される
- **Discord/Slack**: アプリ登録が必要(少し重い)
- **Skip for now**: "ローカル起動確認" の最短ルート
**Skip for now**を選択すると・・・
```text
◇ 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 / doctor で稼働確認(前述の通り)。認証ルートの選択(パターンA/B/C)はその後で、スキルはさらにその後。認証 → チャネル → スキル の順が安定。
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)が繋がるはず。
Phase 4: トークン不一致との戦い
ログにこうある:
unauthorized: gateway token mismatch (set gateway.remote.token to match gateway.auth.token)gateway closed (1008): unauthorizedinvalid connect params: at /client/id ...
つまり、
- Gateway側が要求するトークン(
gateway.auth.token) - クライアント側が持ってるトークン(
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接続中だから)。
いまやること(最短)
SSHポートフォワードでダッシュボードを開く。VS Code の Remote-SSH を使っているなら、ポート転送が自動で効いている場合もある。PowerShellから手動で掘る場合:
ssh -N -L 18789:127.0.0.1:18789 mamu@192.168.0.108
そして手元のブラウザで http://localhost:18789/ を開く。ブラウザ無しでもCLIで設定/確認はできるが、最終的にはブラウザ開いた方がラク。
ただし:さっきの “token mismatch” は放置するとダッシュボードが死ぬ
前述の token mismatch が残ったままだと、UIを開いても赤くなる。まずトンネルを掘ってブラウザで確認し、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環境ならダッシュボードはポートフォワードで開く
前述の 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 側を誤爆しないよう注意(ここ重要)
ビルドは必要?
ビルドは “先でも後でもいい” が、いちばん安全な順番は:
- まずポート競合を解消(clawdbot-gateway を止める/disable)
- OpenClaw の gateway を起動して、18789 が OpenClaw になったのを確認
- それから UI が無いと言われたら
pnpm ui:build(必要なときだけ)
UIビルドしても ポート競合は絶対に直らない。Control UI assets not found が出たときだけ cd ~/openclaw && pnpm ui:build すればいい。先にビルドしても害はないが、今回の根本原因にはノータッチ。
Phase 5: 翌朝の解決
朝になって状況を確認したところ、結論として 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ポートフォワードで http://localhost:18789/ を開く。
もしここでまた UI エラーが出たら?
Control UI assets not found が出たら pnpm ui:build → gateway再起動(Phase 4 参照)。画面は開けてるけど、Web UI が Gateway の WebSocket に認証できてない状態です。
スクショの赤いエラーが核心:
画像
unauthorized: gateway token missing (Open the dashboard URL and paste the token in Control UI settings)
つまり 「トークンが”無い” or “違う”」 ので Health が Offline のまま。
Phase 6: CLI導入と認証設定
まず結論:やることは「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_missing→webchat connected✅(トークン入れたから繋がった)
なので Gateway運用としては成功。
ただし LLM(Claude)を使うための”Anthropic 認証”は別腹で、そこが未完了。
いま tui が返事しない理由
tui で
「今使っているモデル名を教えて」
って聞いて 2~3分 “pondering” は、だいたいこのどれか:
- Anthropicの認証が無い(いちばん濃厚)
- デフォルトモデルが Anthropic のままなのに、認証だけ無い
- そもそもモデル解決に失敗してる(unknown のまま)
ウィザード仕様にも「モデルチェックで”missing auth”警告を出す」ってあるので、それが現実化してるだけ。
じゃあどう直す?(ターミナル最短ルート)
意図は「APIキーじゃなくて Auth(Claude Code 側の認証)でやりたい」なので、やることはこれ。
A) Claude Code のOAuth認証を流用する(おすすめ)
OpenClaw は Linux/Windows だと ~/.claude/.credentials.json を再利用できる、とウィザードに書いてある。
つまり:
- Claude Code がそのマシンでログイン済みになってることを確認
- その上で 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」みたいな項目が出てくるから:
- provider は Anthropic を選ぶ(デフォルトが opus-4-6 ならなおさら)
- 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 が返事する(復活ポイント)
つまり記事の構成は:
- Gateway疎通OK
- でもモデル認証が無いと tui は沈黙する
- 認証を入れると復活(脳みそが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でやる」ルートそのもの。
ここでやること
- 別ターミナル(または手元PC側)で
claude setup-token
- 出てきた setup-token をコピペ
- いまの画面の ✅ Anthropic token (paste setup-token) に貼り付けて進む
どこで claude setup-token を叩く?
- SSH接続中でもOK(そのSSH先に
claudeコマンドが入ってれば) - もしSSH先に
claudeが無い / ログインしてないなら:- ローカル(あなたのWindows側)で
claude setup-tokenを実行 → トークンだけSSH先のOpenClawに貼る って流れでもOK
- ローカル(あなたのWindows側)で
これを選ぶと 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-token は APIキーじゃなく”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が古いものを参照してる / ビルド成果物が消えた”系
一度ビルドしてるログがあるから、まずは「今どの状態か」を最短で潰す。
Phase 7: 動作確認と仕上げ
やるべき最短手順(これで9割終わる)
cd ~/openclaw
pnpm ui:build
systemctl --user restart openclaw-gateway
そのあと ハードリロード(キャッシュ残りがち):
- Windowsブラウザなら
Ctrl + F5(orCtrl+Shift+R)
まだ “Missing assets” が出るときの確認(1分で判定)
1) ビルド成果物が本当にあるか
ls -la ~/openclaw/dist/control-ui/ | head
index.html と assets/ が見えればビルド成果物は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” が出たら
前述の通り pnpm ui:build → gateway再起動で解決。すでにビルド済みなら再実行不要。「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」演出は完成。
おすすめ順(迷ったらこれ)
openclaw tui(主役:対話できるか確認)openclaw gateway status(裏で動いてる証明)openclaw configure(次回以降の布石:モデル/認証/ツール)cat ~/.openclaw/openclaw.json(設定の実体を見せる)
Missing Control UI assets... は”設定失敗”じゃなくて”UIが未ビルドなだけ”(Phase 4 参照)。
さきほどエラーになった動作確認(最短)
openclaw tui
TUIが立ち上がったら、次を入力:
今使っているモデル名を教えて
すると、こう返ってくる:
anthropic/claude-opus-4-6 を使っています。
画面下のステータスにも anthropic/claude-opus-4-6 と出れば、 「OpenClaw ↔ Gateway ↔ Claude(Auth)」の経路が全部つながった証拠。
次にやるなら(おすすめ順)
openclaw gateway status— Gatewayが裏で動いてる証明cat ~/.openclaw/openclaw.json— 設定の実体を見せる(記事向け)- Control UI assets の警告は TUI が動いてるなら必須ではない。ブラウザ側のUIを快適にしたいときだけ
pnpm ui:build→ 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にどれだけ情報を渡すか。
