VPSSpark ブログ
← 開発日記へ戻る

Cloud Mac + OpenRouter 実践:個人専用エンタープライズ AI Gateway の構築

開発 · 2026.06.16 · 約 9 分

MacBook の開発環境——Cloud Mac AI Gateway と OpenRouter 接続
クラウド Mac ワークスペース:OpenRouter 上流とローカル Gateway 制御面を同一常駐マシンに集約。

2026 年現在、個人開発者の手元には Cursor、OpenClaw、自作スクリプト、CLI Agent が同時に走っていることが珍しくありません。ツールごとに API Key を抱え、ベンダーごとに Base URL がバラバラ——本当に困るのは「モデルが弱い」ことではなく、統一された AI Gateway がないことです。キーが散在し、請求が突き合わせられず、ある Provider が落ちると全部止まる。本記事では、VPSSpark クラウド Mac を制御面・実行面に、OpenRouter を上流モデル集約に、LiteLLM を自前 Gateway シェルに据え、仮想キー・予算ブレーカー・モデルフォールバック付きの「個人向けエンタープライズ入口」を、30 分でそのまま再現できる手順を示します。

ひとことで:OpenRouter が「1 Key で 500+ モデル」;クラウド Mac 上の LiteLLM Proxy が「あなた専用 Gateway」——外向きは http://127.0.0.1:4000 のみ、内向きは OpenRouter へルーティング。OpenClaw / Cursor / スクリプトはすべてローカル Gateway を向け、マスターキーはクライアントに入れない。

図 1 · Cloud Mac + OpenRouter 個人 AI Gateway 3 層スタック

クライアント層Cursor · OpenClaw · CLI · MCP
自前 Gateway(クラウド Mac)LiteLLM Proxy · 仮想 Key · ログ · 予算
上流モデル層OpenRouter · 複数 Provider フォールバック
500+
OpenRouter 利用可能モデル
1
外向き Gateway エンドポイント
7×24
クラウド Mac launchd 常駐

なぜ「クラウド 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 に配布しない
個人 vs 小規模チーム
一人なら LiteLLM の Master Key と Virtual Key 2〜3 本で十分です。3〜5 人の小チームなら Nginx リバースプロキシ + Tailscale 内網を足し、Gateway をインターネットに直晒ししない。規模に関わらず、OpenRouter マスター Key はクラウド Mac の .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 を置き換え):

验证 OpenRouter 上游
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-4openai/gpt-4ogoogle/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 配列でフォールバックを発動):

~/ai-gateway/config.yaml
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):

~/ai-gateway/.env
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxx
                LITELLM_MASTER_KEY=sk-local-master-xxxxxxxx

Proxy を起動します(まずフォアグラウンドで試走):

启动 LiteLLM 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 を使いループバックテスト:

环回验证 Gateway
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 Admin UI(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 を作成:

launchd 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
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 と一致させます。

OpenClawGateway 設定ドキュメントで指定される環境変数または設定ファイルで、LLM Provider を OpenAI 互換にし、OPENAI_API_BASE=http://127.0.0.1:4000/v1OPENAI_API_KEY=<virtual-key> を設定。OpenClaw がクラウド Mac 本体で動くならトンネル不要。Linux VPS で動かす場合は LiteLLM を VPS に移すか内網穿透を使う——Master Key を VPS の公開 compose リポジトリに書かないこと。

汎用スクリプト:OpenAI SDK 対応コードは base_url を変えるだけ:

Python 示例
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*.dblitellm.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 ゲートウェイ配備と同様、「変更」と「秘密情報」を監査上も分離する。
よくある落とし穴
ノート PC の Cursor に OpenRouter Key を直書きしつつ、クラウド Mac でも別 Gateway を走らせる——請求が二重になり、漏洩面も二つに。統一入口:ノート PC はトンネルのみ、すべての LLM トラフィックはクラウド Mac Gateway 経由で出網。

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 を同じ「機械室」にまとめましょう。

期間限定

OpenRouter 上流 · クラウド Mac Gateway · Agent 同機常駐

仮想キー管理 · モデルフォールバック · launchd 7×24 · キーはクライアントに置かない

ホームへ
期間限定セール プランを確認する