こんにちは、パレイド技術部の夏目です。
OpenBMB の MiniCPM Desk Pet (v0.7.3) を Apple Silicon の Mac に入れて動かしました。約10億パラメータ (1B) のローカル LLM を積んだデスクトップペットで、推論にリモートを使いません。今回は「新しいアプリが出たので紹介する」記事ではなく、自分の机で動かし、アプリのパッケージを開いて連携の仕組みまで解剖した実機検証ログです。
技術部はエッジコンピューティング——手元の市販機で動く無料・ローカル AI——を根底に置いています。1B という小さなモデルが「机の上で何の役に立つのか」を、速度・構成・連携の仕組みという三つの角度から見ていきます。
本記事はローカル LLM による自動執筆パイプラインで生成されました。現段階ではクラウド AI(Claude 等)の補助や人間の編集が介在していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。
何者か — 1B のローカル LLM を積んだデスクトップペット
MiniCPM Desk Pet は、約10億パラメータの MiniCPM5-1B を搭載したデスクトップペットです。最大の特徴は 完全ローカルで動くことで、推論のためにリモートサーバへ接続しません。ライセンスは AGPLv3 のオープンソースです。
構造はシンプルです。裏で常駐する補助プロセス (サイドカー) として llama.cpp の推論サーバを起動し、GGUF (ローカル実行向けのモデル形式) のモデルをロードして、手元で応答を返す窓口を立てます。その上で 画面に出るペット UI がその窓口に喋りかける、という二層構成です。「ペット」は見た目で、実体は推論サーバとそれを叩く UI に分かれています。
インストールは arm64 版の dmg を /Applications へ入れるだけです。配布物には OpenBMB (Beijing ModelBest Technology) の正規 notarized 署名が付いていて、macOS のセキュリティ機構 (Gatekeeper) をそのまま通ります。野良アプリではない点は、手元で安心して動かすうえで重要です。初回起動では「環境チェック → モデル準備 → 準備完了」の3ステップが走ります。


検証に使った環境と、ダウンロードされたモデルの構成は次のとおりです。
| 項目 | 値 |
|---|---|
| 検証機 | MacBook (Apple Silicon) |
| チップ | Apple M5 (arm64) |
| OS 要件 | macOS 14.0 以上 |
| モデル | MiniCPM5-1B-GGUF |
| 量子化 | Q8_0 (8ビット量子化) |
| モデルサイズ | 約2GB (ディスク必要量は約5GB) |
| 推論エンジン | llama.cpp サイドカー |
準備完了画面には、日常で使うショートカット (Cmd+Shift+M で吹き出し切替、Cmd+Shift+T で思考モード切替) が案内されます。ここまでで、リモートを一切使わずに 1B のローカル LLM が机に常駐する状態になります。

体感した2つの「便利」
実際に常駐させて、はっきり便利だと感じた点が二つありました。順に、正直な印象とあわせて書きます。
一つ目は チャットが速いことです。1B かつ完全ローカルなので、吹き出しを開いて入力すると、ほぼ待たされずに返ってきます。リモート API に投げないので、ネットワーク待ちもトークン課金も発生しません。ただし 1B 相応の限界はあり、込み入った推論や長い文脈の保持は得意ではありません。事実確認の短い問いや、ちょっとした言い換え・要約を即座に返してほしい、という軽い用途なら十分実用、というのが正直な印象です。「重い相談相手」ではなく「机の上の即答係」と捉えるのが妥当でしょう。

二つ目は、机のペット上でツール実行の許可/拒否ができることです。Claude Code がコマンド実行などの許可を求めると、ペットの吹き出しに対象 (例: BASH) と内容、そして「許可 / 拒否」ボタンが出ます。これを押すと、決定がそのまま Claude Code に返ります。ターミナルを注視していなくても、机のキャラクターの上で許可判断が完結するわけです。エージェントに作業を任せながら別画面を見ているとき、視界の端のペットで承認だけ捌ける、という運用が成り立ちます。

連携の仕組み — アプリのパッケージを開いて解析した
ここが今回の技術的な山場です。ペットはどうやって Claude Code の状態を知り、許可を返しているのか。アプリ内部の実装ファイル一式 (パッケージ) を展開して中身を読みました。
土台は Claude Code 標準の hooks 機構 (特定のタイミングで外部スクリプトを呼ぶ仕掛け) です。ペットを起動すると、Claude Code の設定ファイル (~/.claude/settings.json) に hooks が自動登録されます。既存の設定を壊さず、末尾に追記する安全設計でした。hook を実行する node も、検証環境のものを自動で解決していて、環境を決め打ちしていない点も好印象です。登録される12のイベントは、ペットの状態と次のように対応します。
| Claude Code イベント | ペットの状態 | 意味 |
|---|---|---|
| SessionStart | idle | 待機中 |
| UserPromptSubmit | thinking | 入力を受け取り考え始める |
| PreToolUse / PostToolUse | working | ツール実行中 |
| SubagentStart | juggling | サブエージェント並列(お手玉) |
| SubagentStop | working | 並列終了、作業に戻る |
| PostToolUseFailure | error | ツール実行が失敗 |
| Stop | attention | 応答が止まり注意を促す |
| PreCompact | sweeping | 文脈の圧縮中 |
| SessionEnd | sleeping | セッション終了 |
| Notification / Elicitation | notification | 通知・確認の要求 |
ほとんどは「イベントが来たら状態を切り替える」一方向のフックです。例外が許可要求 (PermissionRequest) で、これだけは双方向の通信になっています。ペット側が手元に立つ小さな通信窓口 (ポート 23333) で押下結果を受け、Claude Code に返す——これが「許可をペットで返せる」仕組みの正体でした。窓口はポート 23333〜23337 の範囲を使います。

イベントが起きると、連携用の小さなスクリプトが、Claude Code から渡される情報 (作業フォルダ・作業履歴ファイルのありか・セッション ID など) を受け取り、手元の窓口へ状態を送ります。さらに 作業履歴ファイルの末尾を読んで、セッションのタイトル・最初の質問・直近のやり取りの要約を吹き出しに表示します。状態アイコンだけでなく「今このセッションで何をしているか」まで机の上に出る、という作りです。

連携が、CLI でもエディタ拡張でも同じように動く点も確認しました。hooks は CLI 版でも VS Code 拡張版の Claude Code でも、同じ設定ファイルを読んで発火します。コード上もエディタ配下からの実行を検出し、起動元の種別を区別していました。実際に VS Code 拡張版のセッションでも、Claude Code が渡すのと同じ情報をスクリプトへ流し込み、ペットが thinking → working → juggling → attention → sleeping と遷移するのを目視で確認しています。
なお README に載っているのは主要4機能ですが、コードを読むともっと多くの作りが入っていました。主なものを挙げます。
- 対応エージェントは15以上 (Claude Code / Codex / Cursor / Copilot CLI / Gemini CLI ほか)。状態の検知方式は4系統に分かれていました。
- キャラクターを切り替えるペルソナ機能、見た目を差し替えるテーマ、イベントとアニメの対応を設定で再マップする機能、連携の健全性を見る診断 (Doctor)、ログイン時の自動起動。
- Remote SSH は通信窓口のポートを SSH フォワードし、別マシンで動くエージェントの活動を手元のペットに反映する機能。Windows + RTX4070 などを Mac から叩く構成と相性が良さそうです。
- 一方で 音声の読み上げは無く、表現は吹き出し (視覚) のみです。
同じ「Mac で動く小型ローカル LLM」という観点では、極端に小さいモデルがどこまで使えるかを以前に検証しています。あわせてどうぞ。
まとめ
1B 完全ローカルのデスクトップペットは、重い推論をこなす道具ではありません。今回の検証で見えた実体は、「机の上のエージェント状態モニタ + 軽量チャット + 許可 UI」です。重い仕事はクラウドや別マシンのエージェントに任せ、その状態の可視化と許可判断という役割を 1B が手元で受け持つ、という分担になります。
構造設計の視点で言えば、llama.cpp サイドカー + ペット UI + Claude Code 標準 hooks という、奇をてらわない素直な積み方でした。だからこそ CLI でもエディタ拡張でも同じように動き、許可要求だけ双方向にする、という最小限の工夫で「机で許可を返す」が成立しています。状態可視化と許可返しに限れば、1B でも今すぐ実用という評価です。現状クラウドの大型 LLM が実用面で優位なのは変わりませんが、こうした「手元で完結する小さな役割」を 1B が確実に担えるようになったこと自体が、1年後にローカル LLM が追いつく未来への小さな一歩だと感じます。