こんばんは。
Clawdbotというローカルで動くパーソナルアシスタントがすごいという話を見かけたので試してみます。
スクリプトがあるぞ
さて、今回は私が自宅で動かしているUbuntuのサーバ(Dockerは導入済み)に構築していきます。
ちょっと前の記事ですが、こんな感じで作ったやつです。
gitコマンドが叩けて、docker composeが叩けるくらいに思ってもらえれば大丈夫です。
shironeko.hateblo.jp
基本的にはこのページを参考にするだけなので、何か変わっていたら公式のほうを見てもらえれば。
docs.clawd.bot
まずは適当なところにcloneしてきます。
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
次に環境変数を設定したうえでセットアップスクリプトを叩きます。
CLAWDBOT_HOME_VOLUMEはdocker volumeの名前で、コンテナを作り直しても設定とかが引き継がれるはずです。
CLAWDBOT_EXTRA_MOUNTSはマウントしたいディレクトリを指定します。
私の環境はSambaでWin環境から直でエクスプローラーでアクセスできるようにしているので、マウントしておいて直でファイルを渡すとかがしやすくなる気がします。
(ちなみにclawdと.clawdbotもしれっとホスト側の$HOMEにバインドマウントされていました)
export CLAWDBOT_HOME_VOLUME="clawdbot_home" export CLAWDBOT_EXTRA_MOUNTS="$HOME/docker_volumes/clawdbot/mounts:/home/node/mounts" ./docker-setup.sh
しばらく待っているとセットアップが終わって免責っぽいメッセージが出てきます。
◆ I understand this is powerful and inherently risky. Continue? │ ● Yes / ○ No
次に初期設定(オンボーディング)をすぐにするか聞いてくるので、素直にやっていきましょう。
◆ Onboarding mode │ ○ QuickStart │ ● Manual (Configure port, network, Tailscale, and auth options.)
ローカルゲートウェイでOK。
ワークスペースもそのままでOK。
モデルはChatGPT Plusを契約しているのでCodexを使います。
◆ What do you want to set up? │ ● Local gateway (this machine) (No gateway detected (ws://127.0.0.1:18789)) │ ○ Remote gateway (info-only) ◆ Workspace directory │ /home/node/clawd ◆ Model/auth provider │ ● OpenAI (Codex OAuth + API key) │ ○ Anthropic │ ○ MiniMax │ ○ Qwen │ ○ Synthetic │ ○ Google │ ○ Copilot │ ○ OpenRouter │ ○ Vercel AI Gateway │ ○ Moonshot AI │ ○ Z.AI (GLM 4.7) │ ○ OpenCode Zen │ ○ Skip for now
OAuth認証のURLが指定されるのでアクセスして認証するとlocalhostのURLにリダイレクトされるのですが、SSHでつないでいるので404になります。
その404になったリダイレクトURLをそのまま張り付けると認証されます。
◆ OpenAI auth method │ ● OpenAI Codex (ChatGPT OAuth) │ ○ OpenAI API key │ ○ Back Open this URL in your LOCAL browser: 【認証URL】 │ ◆ Paste the redirect URL (or authorization code) │ _
モデルはgpt-5.2でいいのでそのままにします。
◇ OpenAI OAuth complete │ ◇ Model configured ──────────────────────────╮ │ │ │ Default model set to openai-codex/gpt-5.2 │ │ │ ├─────────────────────────────────────────────╯ │ ◆ Default model │ ● Keep current (openai-codex/gpt-5.2) │ ○ Enter model manually │ ○ openai-codex/gpt-5.1 │ ○ openai-codex/gpt-5.1-codex-max │ ○ openai-codex/gpt-5.1-codex-mini │ ○ openai-codex/gpt-5.2 │ ○ openai-codex/gpt-5.2-codex
ポートもこだわりはないのでそのままです。
TailscaleはVPN接続の設定ですかね。OFFでOKです。
◆ Gateway port │ 18789█ ◆ Gateway bind │ ● Loopback (127.0.0.1) │ ○ LAN (0.0.0.0) │ ○ Tailnet (Tailscale IP) │ ○ Auto (Loopback → LAN) │ ○ Custom IP ◆ Gateway auth │ ○ Off (loopback only) │ ● Token (Recommended default (local + remote)) │ ○ Password ◆ Tailscale exposure │ ● Off (No Tailscale exposure) │ ○ Serve │ ○ Funnel ◆ Gateway token (blank to generate) │ Needed for multi-machine or non-loopback access
チャネルの設定を求められるのでDiscordを使うことにします。お好みで。
◇ Channel status ────────────────────────────╮ │ │ │ Telegram: not configured │ │ WhatsApp: not configured │ │ Discord: not configured │ │ Slack: not configured │ │ Signal: not configured │ │ iMessage: not configured │ │ 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 │ │ Zalo: install plugin to enable │ │ Zalo Personal: install plugin to enable │ │ Tlon: install plugin to enable │ │ │ ├─────────────────────────────────────────────╯ │ ◆ Configure chat channels now? │ ● Yes / ○ No ◆ Select a channel │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) │ ● Discord (Bot API) (not configured) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Tlon (Urbit) │ ○ Finished ◇ Discord bot token ──────────────────────────────────────────────────────────────────────╮ │ │ │ 1) Discord Developer Portal → Applications → New Application │ │ 2) Bot → Add Bot → Reset Token → copy token │ │ 3) OAuth2 → URL Generator → scope 'bot' → invite to your server │ │ Tip: enable Message Content Intent if you need message text. (Bot → Privileged Gateway │ │ Intents → Message Content Intent) │ │ Docs: discord │ │ │
Discord Developer Portalからログインして、アプリを新規作成、「Bot」から「Reset Token」でトークンを生成してコピーしておきます。


好みでインテントを有効化しておきます。Message Content Intentがあれば最低限OKだと思います。

「OAuth2」から「bot」を選択して、Bot Permissionsも設定します。

View ChannelsとSend MessagesとRead Message Historyくらいがついてれば最低限で、Add Reactionsとかも足しておくと楽しい気がします。お好みで。

一番下に出てくるURLにアクセスすると追加できます。

コピーしておいたトークンを張り付けます。
├──────────────────────────────────────────────────────────────────────────────────────────╯ │ ◆ Enter Discord bot token │ _
チャネルの設定ができますが、専用なら特に設定しなくてもいいような気もします。
(ちなみに私はここでチャネルの設定をミスってハマり、あとで.clawdbot/clawdbot.jsonのサーバIDとチャネルID直で書き換えました)
さらなる設定を続けるか聞かれますが、完了を選びます。
DMの設定はいらないのでNoで。
◇ Configure Discord channels access? │ Yes │ ◇ Discord channels access │ Allowlist (recommended) │ ◆ Discord channels allowlist (comma-separated) │ My Server/#general, guildId/channelId, #support ◇ Discord channels ───────────────────────╮ │ │ │ Resolved channels: 【チャネルID】 │ │ │ ├──────────────────────────────────────────╯ │ ◆ Select a channel │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) │ ○ Discord (Bot API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Tlon (Urbit) │ ● Finished (Done) ◇ Configure DM access policies now? (default: pairing) │ No Updated ~/.clawdbot/clawdbot.json Workspace OK: ~/clawd Sessions OK: ~/.clawdbot/agents/main/sessions
続いてスキルの設定をします。
Homebrew推奨らしいのでYesにしたのですが、よく見るとインストールコマンドを表示しますかって聞かれてて謎です。
◇ Skills status ────────────╮ │ │ │ Eligible: 6 │ │ Missing requirements: 43 │ │ Blocked by allowlist: 0 │ │ │ ├────────────────────────────╯ │ ◆ Configure skills now? (recommended) │ ● Yes / ○ No ◇ Homebrew recommended ──────────────────────────────────────────────────────────╮ │ │ │ Many skill dependencies are shipped via Homebrew. │ │ Without brew, you'll need to build from source or download releases manually. │ │ │ ├─────────────────────────────────────────────────────────────────────────────────╯ │ ◆ Show Homebrew install command? │ ● Yes / ○ No ◇ Homebrew install ─────────────────────────────────────────────────────╮ │ │ │ Run: │ │ /bin/bash -c "$(curl -fsSL │ │ https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" │ │ │ ├────────────────────────────────────────────────────────────────────────╯
仕方がないのでもう一つターミナルを立ち上げて、コンテナに対してコマンドを実行します。
コンテナ名はdocker psで確認しましょう。
docker exec -it clawdbot_clawdbot-cli_run_0010aebb78a7 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
もとのターミナルに戻ります。
nodeの管理はなんでもいいですが、pnpmにでもしておきましょう。
◆ Preferred node manager for skill installs
│ ○ npm
│ ● pnpm
│ ○ bun
どのスキルをインストールするか聞かれます。
よくわからないですが、「blogwatcher」と「summarize」を選んでおきました。
が、なんかインストールは失敗しました。あとで「clawdbot doctor」コマンドで確認してねとのことなので先に進みます。
◆ Install missing skill dependencies │ ◻ Skip for now (Continue without installing dependencies) │ ◻ 🔐 1password │ ◻ 📝 apple-notes │ ◻ ⏰ apple-reminders │ ◻ 🐻 bear-notes │ ◻ 🐦 bird │ ◻ 📰 blogwatcher │ ◻ 🫐 blucli │ ◻ 📸 camsnap │ ◻ 🧩 clawdhub │ ◻ 🎛️ eightctl │ ◻ ♊️ gemini │ ◻ 🧲 gifgrep │ ◻ 🎮 gog │ ◻ 📍 goplaces ...
いろいろ聞かれますが、いったんNoにします。
◇ Set GOOGLE_PLACES_API_KEY for goplaces? │ No │ ◇ Set GOOGLE_PLACES_API_KEY for local-places? │ No │ ◇ Set GEMINI_API_KEY for nano-banana-pro? │ No │ ◇ Set OPENAI_API_KEY for openai-image-gen? │ No │ ◇ Set OPENAI_API_KEY for openai-whisper-api? │ No │ ◇ Set ELEVENLABS_API_KEY for sag? │ No
フックの設定を聞かれますが、どれもあっても良さそうなので全部有効にしました。
これでオンボーディングは終了です。
◆ Enable hooks? │ ◻ Skip for now │ ◼ 🚀 boot-md (Run BOOT.md on gateway startup) │ ◼ 📝 command-logger (Log all command events to a centralized audit file) │ ◼ 💾 session-memory (Save session context to memory when /new command is issued)
話してみる
メンションを付けて呼んでみると返事がありました。

こんな感じでいろいろと覚えさせる感じでしょうか。

本来は初回でオンボーディングがあるのだと思うのですが、前述の通り接続がうまくいかなかったので手動でオンボーディングを頼んでみます。
この辺りが自然言語で普通にできるのが使い心地がいいですね。

設定して遊んでみようと思います。
備忘録的なのでちょっと雑ですが、何かの参考になれば。
それでは。