Mac と AI 用の仮想マシンの役割分担 ― ノートの窓口は Mac、AI の作業と定期処理は仮想マシンに
家では、AI まわりの仕事を2か所に分けて置いています。いつも電源を入れている Mac(mac3)と、家のサーバーの上の AI 用の仮想マシン(vm1)です。11月の初めに、Mac でやっていた仕事の多くを vm1 に移しました(AI 用の仮想マシンに仕事を引っ越す)。そのあとも仕事が増えたので、今どちらで何をしているかを、理由と一緒にまとめておきます。
一言でいうと、ノートの窓口(Obsidian)と Mac でしかできないことは Mac、AI の作業と定期処理は vm1です。家のサーバーは、両方から結果を取りに行って、トップページに出す係です。

1. 分け方の考え方
- 止まらない場所で動かす:Mac は、更新の再起動やスリープで止まることがあります。定期的に動かす処理は、いつも動いている vm1 に置きます
- AI が壊せる範囲を小さくする:AI に確認なしで作業させるのは vm1 だけ。vm1 からはほかの機器に入れない作りにし、vm1 が壊れても作り直せば済むようにしています
- ノートの書き込みの窓口は1つ:ノート(Obsidian)は Google ドライブで同期しています。複数の場所から同時に書くと同期がぶつかります(ノートが 1,400 個以上に増えた話)。そこで、書き込みは Mac の Obsidian に集め、vm1 にはノートのファイルを置いていません
- Mac でしかできないことは Mac:SMS(iMessage)の送信や、Mac でログインしてある Google のカレンダーなど
2. Mac に置いている仕事
| 仕事 | 動き方 | Mac に置く理由 |
|---|---|---|
| Obsidian(ノートの書き込みの窓口) | アプリを常に起動。AI からは MCP(AI がほかのアプリを操作するための共通の仕組み)で読み書き | 書き込みの窓口を1つにするため |
| vm1 へのトンネル | launchd(Mac の常駐の仕組み)で常に張る。切れたら30秒で張り直す | vm1 に Mac へ入る鍵を置かないため、Mac の側から張る |
| ToDo をトップページに渡す | 家のサーバーが5分ごとに取りに来る | ノートのファイルを読むので、ノートがある Mac で |
| AI 共通のルールを vm1 に配る | 15分ごと。共通ルールのノートが変わったときだけ送る | 同上 |
| Google カレンダーをトップページに渡す | 15分ごと | Google の認証を Mac に置いている |
| 至急メモを SMS で送る | トップページの「至急」欄に書くと、家のサーバーから Mac に頼む | Mac のメッセージアプリで送るため |
| Gmail のラベルの月1回の見直し | Mac の Orca の定期実行(毎月1日) | Mac で作った設定のまま |
| Mac 自身の AI の使用量 | 5分ごと。今日のトークン数と動いている作業の数だけ | その Mac で動いた分は、その Mac でしか数えられない |
3. vm1 に置いている仕事
| 仕事 | 動き方 |
|---|---|
| 4つの AI(Claude Code・Codex・Gemini・Grok)と Orca | Orca は画面なしのサーバーとして常に動く。Mac の Orca からも vm1 に作業を頼める |
| Linear の課題を処理 | Orca の定期実行で1時間ごと。「AI作業」の印が付いた課題を拾い、ノートを作って課題を終える(Linear の課題を AI が自動で処理する) |
| AI の使用状況(上限の %) | 5分ごと。Claude と Gemini の上限はアカウント共通なので、vm1 の1か所で取る(AI の使用状況をトップに表示する) |
| メールのまとめ | 15分ごと。メールを取り込み、AI で分類・要約してトップページ用にまとめる |
| Mac の空き容量 | 1時間ごとに Mac に聞く |
| 自分の様子 | 5分ごとに負荷・メモリ・サービスの状態をまとめる(仮想マシンの様子をトップに出す) |
| ブラウザで見られる画面 | トップページの「画面を開く」から、vm1 のデスクトップと Orca を使える |
4. Obsidian(ノート)のつなぎ方
vm1 の AI もノートを読み書きします。ただし、vm1 にはノートのファイルがありません。Mac が vm1 に向けてトンネルを張り、vm1 の AI はその通り道を通して、Mac の Obsidian に読み書きを頼みます。
- Obsidian のプラグイン「Local REST API」が、Mac の中だけで読み書きの窓口を開く
- Mac が vm1 へ SSH し、vm1 の中の決まった番号を、Mac の窓口につなぐ(逆向きのトンネル)
- vm1 の Claude Code と Codex は、MCP でその番号に読み書きを頼む
- トンネル用の鍵は、vm1 の側で「通り道を開く」こと以外は何もできないようにしてある
こうすると、vm1 の AI が書いた内容も Mac の Obsidian を通るので、書き込みの窓口は1つのままです。AI 共通のルールにも「Mac が止まっているときは、ほかの方法で書かずに利用者に知らせる」と書いてあります。
5. 仮想マシンにかかわる3本のつながり
vm1 にかかわるつながりは3本だけで、どれも向きと「できること」を1つに決めています(家のサーバーと Mac の間には、ToDo・カレンダー・SMS の受け渡しが別にあります)。
| 向き | できること |
|---|---|
| Mac → vm1 | トンネルを張るだけ(コマンドは動かせない) |
| 家のサーバー → vm1 | 決まったファイル(使用状況・メールのまとめ・様子など)を受け取るだけ |
| vm1 → Mac | Mac の空き容量を聞くだけ(「vm1 からはどこにも入れない」の唯一の例外) |
6. Mac が止まると、何が止まるか
分けたことで、Mac が止まっても AI の作業や集計は続きます。それでも止まるものがあるので、書き出しておきます。
| 止まるもの | トップページでの見え方 |
|---|---|
| vm1 の AI のノートの読み書き(Linear の課題の処理も、ノートに書けない) | 仮想マシンの欄の「Obsidian へのトンネル」が黄色の「切断」 |
| ToDo・Google カレンダーの更新 | 止まる前の内容のまま |
| 至急メモの SMS | 送られない |
| Mac の空き容量 | 3時間以上古いと、Mac が止まっている可能性があると出る |
逆に、vm1 が止まると、AI の作業・使用状況・メールのまとめが止まります。こちらは仮想マシンの欄の「更新が止まっています」で気づけます。
7. これから
- ノートの読み取り専用の写しを vm1 に置く:Google ドライブから読み取りだけの許可で写し、ToDo の受け渡しと共通ルールの配布を vm1 に移す予定です(仮想マシンの欄の「Vault の写し:まだ無し」がこれ)
- そうすると Mac に残るのは、Obsidian の書き込みの窓口と、SMS・カレンダーのような Mac でしかできないことになります
