2026 年現在、個人開発者の手元には Cursor、OpenClaw、自作スクリプト、CLI Agent が同時に走っていることが珍しくありません。ツールごとに API Key を抱え、ベンダーごとに Base URL がバラバラ——本当に困るのは「モデルが弱い」ことではなく、統一された AI Gateway がないことです。キーが散在し、請求が突き合わせられず、ある Provider が落ちると全部止まる。本記事では、VPSSpark クラウド Mac を制御面・実行面に、OpenRouter を上流モデル集約に、LiteLLM を自前 Gateway シェルに据え、仮想キー・予算ブレーカー・モデルフォールバック付きの「個人向けエンタープライズ入口」を、30 分でそのまま再現できる手順を示します。
http://127.0.0.1:4000 のみ、内向きは OpenRouter へルーティング。OpenClaw / Cursor / スクリプトはすべてローカル Gateway を向け、マスターキーはクライアントに入れない。
図 1 · Cloud Mac + OpenRouter 個人 AI Gateway 3 層スタック
なぜ「クラウド Mac + OpenRouter」か——OpenRouter だけでは足りない理由
OpenRouter はマネージド型 Gateway です。登録すれば Key が得られ、公式ドキュメントのとおり API は OpenAI Chat Completions と高い互換性があります。素早い接続には最適ですが、解決するのは上流の集約であって、あなたのガバナンス境界ではありません。Cursor と OpenClaw に個別に失効可能な Key を渡すことは難しく、Provider 請求の外側でチーム単位の spend cap をかけるのも困難です。Gateway を Xcode・AppleScript・ローカル MCP と同じ macOS 実行面に置くこともできません。
クラウド Mac の価値は「制御面と Apple エコシステムの実行面が一体になる」点にあります。Gateway プロセスを launchd で常駐させ、秘密情報はサーバー上の .env にだけ置く。OpenClaw の実行、ローカル Git 操作、iOS ビルドのトリガーまで、ノート PC にコンテキストを戻す必要がありません。Linux VPS でゲートウェイを既に運用している場合は、VPS を IM/Webhook 入口専用、クラウド Mac を Gateway + ビルド専用に分ける構成が有効です——役割分担は Linux VPS 上の OpenClaw ゲートウェイと CI/CD 意思決定マトリクスを参照;クラウド Mac 側の launchd 常駐の違いは クラウド Mac OpenClaw デプロイと launchd FAQにまとめています。
アーキテクチャ選定:3 層の役割分担
先に責務を切り分けておけば、後の設定でねじれが起きにくくなります。
| 層 | コンポーネント | 役割 | やらないこと |
|---|---|---|---|
| 上流 | OpenRouter | 複数モデルの統一課金、Provider フォールバック、トークン従量 | キー管理や社内ネット分離の代替にはならない |
| Gateway | LiteLLM Proxy(クラウド Mac) | 仮想 Key、ルーティング表、ログ、予算、OpenAI 互換出口 | チャットセッションの長期ホスト(OpenClaw に任せる) |
| 実行 | クラウド Mac + OpenClaw | 7×24 Agent、MCP、macOS 自動化、CI トリガー | マスター API Key をノート PC に配布しない |
.env にだけ書く——クライアントは常に Virtual Key を使います。
着手前チェックリスト(15 分で自己確認)
順番にチェックすれば、「つながらない」系トラブルの 9 割は防げます。
- OpenRouter アカウント開設済み。API Key 作成と月次 credit 上限の設定まで完了。
- クラウド Mac に SSH 可能。
arm64(Apple Silicon)、macOS 14 以上。 - Homebrew 導入済み。Python 3.11+ または Docker Desktop(どちらか一方。本記事は pip ルートで最軽量)。
- Gateway は
127.0.0.1:4000のみリッスン。リモートから叩く場合は Tailscale / SSH トンネルを先に張り、4000 を公網に直開放しない。 - ノート PC 側の Cursor / OpenClaw からクラウド Mac へ SSH 可能(鍵認証、パスワード無効)。
クラウド Mac の基礎と選び方は Mac VPS とクラウド macOS 選定ガイド(2026)を参照してください。
ステップ 1:OpenRouter 上流の設定
OpenRouter コンソールにログインし、cloud-mac-gateway という名前の Key を作成します。credit limit(例:$20/月)にチェックを入れ、ハードブレーカーとして使うことを推奨します。Key を控えたら直ちにクラウド Mac に書き込み、Git には入れないでください。
クラウド Mac 上で curl により上流到達性を確認します($OPENROUTER_API_KEY を置き換え):
export OPENROUTER_API_KEY="sk-or-v1-xxxxxxxx"
curl -s https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "ping"}]
}' | head -c 400
JSON が返り choices を含めば上流 OK です。モデル ID は provider/model 形式。一覧は OpenRouter Models ページにあり、よく使う例は anthropic/claude-sonnet-4、openai/gpt-4o、google/gemini-2.5-pro-preview です。
ステップ 2:クラウド Mac に LiteLLM Gateway を導入
LiteLLM はオープンソースの LLM Gateway で、ドキュメントは docs.litellm.ai です。OpenRouter をあなた専用の OpenAI 互換エンドポイントに包み、仮想キーと spend tracking をサポートします。
# 云 Mac SSH 会话内
brew install python@3.12
python3.12 -m venv ~/ai-gateway/.venv
source ~/ai-gateway/.venv/bin/activate
pip install 'litellm[proxy]'
mkdir -p ~/ai-gateway && cd ~/ai-gateway
config.yaml を作成します——Gateway のルーティングの心臓部です。以下の例ではデフォルトを Claude Sonnet にし、失敗時は GPT-4o mini へフォールバックします(OpenRouter の models 配列でフォールバックを発動):
model_list:
- model_name: smart
litellm_params:
model: openrouter/anthropic/claude-sonnet-4
api_key: os.environ/OPENROUTER_API_KEY
models:
- openrouter/anthropic/claude-sonnet-4
- openrouter/openai/gpt-4o-mini
- model_name: fast
litellm_params:
model: openrouter/openai/gpt-4o-mini
api_key: os.environ/OPENROUTER_API_KEY
litellm_settings:
drop_params: true
set_verbose: false
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
database_url: "sqlite:///./litellm.db"
同ディレクトリに .env を作成(権限 chmod 600):
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxx
LITELLM_MASTER_KEY=sk-local-master-xxxxxxxx
Proxy を起動します(まずフォアグラウンドで試走):
cd ~/ai-gateway
source .venv/bin/activate
set -a && source .env && set +a
litellm --config config.yaml --host 127.0.0.1 --port 4000
別ターミナルで Master Key を使いループバックテスト:
curl -s http://127.0.0.1:4000/v1/chat/completions \
-H "Authorization: Bearer $LITELLM_MASTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "smart",
"messages": [{"role": "user", "content": "gateway ok?"}]
}'
litellm --config config.yaml --detailed_debug 起動後、ドキュメントの /ui パス)で Cursor・OpenClaw 用に Virtual Key をそれぞれ作成し、月 $5/$10 の予算を設定します。あるクライアントが漏洩しても該当 Virtual Key だけ失効でき、OpenRouter マスター Key は触りません。
ステップ 3:launchd 常駐(クラウド Mac 7×24)
検証が終わったら Gateway を launchd に任せ、SSH 切断で止まらないようにします。~/Library/LaunchAgents/com.vpsspark.litellm.plist を作成:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.vpsspark.litellm</string>
<key>ProgramArguments</key>
<array>
<string>/Users/YOUR_USER/ai-gateway/.venv/bin/litellm</string>
<string>--config</string>
<string>/Users/YOUR_USER/ai-gateway/config.yaml</string>
<string>--host</string><string>127.0.0.1</string>
<string>--port</string><string>4000</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>OPENROUTER_API_KEY</key><string>sk-or-v1-xxx</string>
<key>LITELLM_MASTER_KEY</key><string>sk-local-master-xxx</string>
</dict>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key>
<string>/Users/YOUR_USER/ai-gateway/litellm.log</string>
<key>StandardErrorPath</key>
<string>/Users/YOUR_USER/ai-gateway/litellm.err</string>
</dict>
</plist>
読み込みと確認:
launchctl load ~/Library/LaunchAgents/com.vpsspark.litellm.plist
launchctl list | grep litellm
curl -fsS http://127.0.0.1:4000/health || echo "check logs"
クラウド Mac 常駐とトラブルシュートの詳細は、launchd 環境検証 FAQの「ログインセッション vs バックグラウンドデーモン」を参照してください——Gateway と OpenClaw は別 plist で互いに再起動の影響を受けにくくできます。
ステップ 4:Cursor・OpenClaw・スクリプトの接続
すべてのクライアントで変えるのは 2 点だけ:Base URL を Gateway に、API Key は Virtual Key(管理用途のみ Master Key)。
Cursor:Settings → Models → Override OpenAI Base URL → http://127.0.0.1:4000/v1(Cursor がノート PC、Gateway がクラウド Mac の場合は ssh -L 4000:127.0.0.1:4000 user@cloud-mac でローカル転送、または Tailscale 内網アドレス)。モデル名は smart / fast で config.yaml の model_name と一致させます。
OpenClaw:Gateway 設定ドキュメントで指定される環境変数または設定ファイルで、LLM Provider を OpenAI 互換にし、OPENAI_API_BASE=http://127.0.0.1:4000/v1、OPENAI_API_KEY=<virtual-key> を設定。OpenClaw がクラウド Mac 本体で動くならトンネル不要。Linux VPS で動かす場合は LiteLLM を VPS に移すか内網穿透を使う——Master Key を VPS の公開 compose リポジトリに書かないこと。
汎用スクリプト:OpenAI SDK 対応コードは base_url を変えるだけ:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:4000/v1",
api_key="sk-virtual-cursor-xxxxxxxx",
)
resp = client.chat.completions.create(
model="smart",
messages=[{"role": "user", "content": "总结今日 commit"}],
)
print(resp.choices[0].message.content)
モデルルーティングとコスト管理
エンタープライズ級 Gateway の本質は「モデルを叩ける」ことではなく、「いつ高価なモデルを使うべきか分かっている」ことです。個人スタックでは次の 3 ルートを固定することを推奨します:
- デフォルトは fast:コード補完・整形・簡単な Q&A は
gpt-4o-mini級。コストは Sonnet のおよそ 1/10。 - 明示的に smart へ:アーキテクチャ設計・大規模リファクタ・複数ファイル推論では
smartへ(OpenRouter フォールバックチェーン付き)。 - 二重予算:OpenRouter コンソールで総 credit cap、LiteLLM Virtual Key でクライアント別 cap——両方が発動して初めて「完全停止」。
OpenRouter はリクエストの models 配列で Provider 級フォールバックが可能。LiteLLM の model_list はビジネス別名(smart/fast)と実モデル ID を分離でき、後からモデル変更は YAML だけでクライアント無変更です。
セキュリティ基線(必須、任意ではない)
個人 Gateway で最も多い事故は Key の Git 混入と Gateway の公網直晒しです。最低限、次の 5 つを守ってください:
.envと plist 内の秘密情報はバージョン管理に入れない。.gitignoreに.env、*.db、litellm.logを明記。- LiteLLM は
127.0.0.1のみバインド。リモートは SSH -L または Tailscale。複数人共用なら Nginx + mTLS を前段に。 - OpenRouter Key 漏洩時はコンソールで即 Rotate。GitHub Secret Scanning 連携はあるが、能動的なローテーションを前提に。
- 定期的に
sqlite3 litellm.dbで spend ログをエクスポートし OpenRouter Dashboard と突合。異常トラフィックは直ちに Virtual Key を失効。 - クラウド Mac で FileVault を有効化、SSH は鍵のみ。Linux ゲートウェイ配備と同様、「変更」と「秘密情報」を監査上も分離する。
FAQ
LiteLLM を飛ばしてクライアントから OpenRouter 直結は?可能で、一人のミニマル構成向きです。ただし仮想キー・統一ログ・ローカルルート別名を失い、クライアントが増えればいずれ Gateway 層が必要になります。
Gateway はクラウド Mac と Linux VPS どちら?LLM 中継だけで macOS ツール不要なら VPS が安い。OpenClaw + MCP + Xcode 自動化が絡むなら、クラウド Mac 一台で実行面 + Gateway が楽です。
OpenRouter が落ちたら?LiteLLM model_list に第二上流(例:Anthropic Key 直結の emergency route)を足すか、一時的に fast を OpenRouter の free tier モデルへ下げる。
レイテンシは増える?Proxy 1 ホップは通常数 ms〜数十 ms。LLM 推論時間に比べれば無視できるレベル。ボトルネックはモデル選択とリージョンルーティングに多く、LiteLLM 本体ではありません。
クラウド Mac mini なら Gateway と Agent が同じ筐体でスムーズ
個人 AI Gateway で最も嫌なのは「制御面がノート PC、実行面がクラウド、秘密情報がチャットログ」——3 台で真実が 3 つに割れることです。LiteLLM Gateway と OpenClaw を VPSSpark クラウド Mac mini M4 に同居させれば、Apple Silicon のユニファイドメモリで並列 Agent + 軽量 Proxy が余裕を持って動きます。macOS ネイティブの Unix 環境なら Homebrew、Python venv、launchd 常駐、ローカル MCP がそのまま使え、Linux で macOS 能力を再実装する必要がありません。
M シリーズ Mac mini の待機電力はしばしば一桁ワット台で、7×24 Gateway 運用でも電気代を気にしにくい。Gatekeeper、SIP、FileVault の重ね合わせは、長期ホストする API 秘密情報のリスク面を一般的な Windows ワークステーションより小さくします。ノート PC がスリープして Agent が切れるより、「モデル入口 + 実行面」を安定した 1 台のクラウド Mac に集約する方が合理的です。
OpenRouter 駆動の個人 AI Gateway を組み立てるなら、VPSSpark クラウド Mac mini M4 はワンストップの制御面の起点です——プランを今すぐ確認し、秘密情報・ルーティング・Agent を同じ「機械室」にまとめましょう。