VPSSpark Блог
← Вернуться к дневнику

Cloud Mac + OpenRouter: личный AI Gateway корпоративного уровня — практический гайд

Разработка · 2026.06.16 · ~9 мин

MacBook с редактором кода и терминалом — AI Gateway на облачном Mac и OpenRouter
Рабочее место на облачном Mac: upstream OpenRouter и локальный Gateway на одной постоянно работающей машине.

В 2026 году у индивидуального разработчика одновременно крутятся Cursor, OpenClaw, собственные скрипты и два-три CLI-агента — у каждого инструмента свой API Key, у каждого вендора свой Base URL. Настоящая боль не в том, «достаточно ли силён модельный стек», а в том, что нет единого AI Gateway: ключи разбросаны, счета не сходятся, а при падении одного провайдера останавливается всё сразу. Ниже — готовый маршрут: облачный Mac VPSSpark как плоскость управления и исполнения, OpenRouter как агрегатор моделей, LiteLLM как self-hosted оболочка Gateway — за полчаса вы получите «персональный enterprise-вход» с виртуальными ключами, бюджетным предохранителем и откатом моделей.

Кратко: OpenRouter даёт «один Key на 500+ моделей»; на облачном Mac поднимается LiteLLM Proxy как «ваш собственный Gateway» — наружу только http://127.0.0.1:4000, внутрь маршрутизация в OpenRouter; OpenClaw, Cursor и скрипты смотрят на локальный Gateway, а мастер-ключ никогда не попадает в клиенты.

Рис. 1 · Трёхуровневый стек Cloud Mac + OpenRouter — персональный AI Gateway

Клиентский слойCursor · OpenClaw · CLI · MCP
Self-hosted Gateway (облачный Mac)LiteLLM Proxy · Virtual Key · логи · бюджет
Слой upstream-моделейOpenRouter · откат между провайдерами
500+
моделей в OpenRouter
1
внешняя точка Gateway
7×24
launchd на облачном Mac

Зачем «облачный Mac + OpenRouter», а не только OpenRouter?

OpenRouter — это управляемый Gateway: регистрация, ключ, и вы в деле. Официальная документация подчёркивает высокую совместимость API с OpenAI Chat Completions — идеально для быстрого подключения. Но он закрывает агрегацию upstream, а не вашу границу управления: нельзя выдать Cursor и OpenClaw отдельные ключи с независимым отзывом; сложно наложить командный spend cap поверх счетов провайдеров; и вы не поставите Gateway в одну плоскость исполнения с нативным стеком macOS (Xcode, AppleScript, локальный MCP).

Облачный Mac объединяет плоскость управления и Apple-экосистему. Процесс Gateway живёт в launchd, секреты — только в серверном .env; когда нужны OpenClaw, локальный Git или сборка iOS, контекст не тащите обратно на ноутбук. Если шлюз уже крутится на Linux VPS, оставьте VPS для IM/Webhook, а облачный Mac — для Gateway и сборок; матрицу разделения смотрите в матрице решений: OpenClaw на Linux VPS и CI/CD; отличия launchd на облачном Mac — в FAQ по OpenClaw на облачном Mac и launchd.

Выбор архитектуры: за что отвечает каждый слой

Сначала разведите зоны ответственности — тогда конфигурация не «закрутится».

Уровень Компонент Задачи Чего не делает
Upstream OpenRouter Единый биллинг моделей, откат провайдеров, оплата по токенам Не заменяет управление ключами и изоляцию внутри сети
Gateway LiteLLM Proxy (облачный Mac) Virtual Key, таблица маршрутов, логи, бюджет, OpenAI-совместимый выход Не хранит долгие чат-сессии (это зона OpenClaw)
Исполнение Облачный Mac + OpenClaw Агент 7×24, MCP, автоматизация macOS, триггеры CI Не отдаёт мастер API Key на ноутбук
Один разработчик vs малая команда
Для соло достаточно Master Key LiteLLM и двух-трёх Virtual Key; для команды из 3–5 человек добавьте Nginx как reverse proxy и Tailscale — Gateway не должен торчать в открытый интернет. При любом масштабе главный ключ OpenRouter лежит только в .env на облачном Mac, клиенты получают Virtual Key.

Чеклист перед стартом (15 минут)

Отмечайте по порядку — так вы отсечёте девяносто процентов ошибок «не подключается».

  • Аккаунт 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 в интернет не выставляйте.
  • С ноутбука Cursor / OpenClaw уже ходят на облачный Mac по SSH (вход по ключу, пароль отключён).

Базовые понятия и выбор облачного Mac — в руководстве по Mac VPS и macOS в облаке (2026).

Шаг 1: настройка upstream OpenRouter

В консоли OpenRouter создайте ключ с именем cloud-mac-gateway, включите credit limit (например, $20/мес.) как жёсткий предохранитель. Запомните ключ и сразу перенесите на облачный Mac — не в Git.

Проверьте доступность upstream с облачного Mac через curl (подставьте $OPENROUTER_API_KEY):

Проверка upstream 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 означает, что upstream в порядке. ID модели в формате provider/model; полный список — на странице OpenRouter Models; типичные значения: anthropic/claude-sonnet-4, openai/gpt-4o, google/gemini-2.5-pro-preview.

Шаг 2: установка LiteLLM Gateway на облачном Mac

LiteLLM — open-source LLM Gateway, документация на docs.litellm.ai. Он оборачивает OpenRouter в ваш OpenAI-совместимый endpoint и даёт виртуальные ключи с учётом расходов.

Установка и инициализация каталога
# сессия SSH на облачном Mac
                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 (массив models OpenRouter включает fallback):

~/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 (сначала в foreground):

Запуск 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

В другом терминале — loopback-тест с Master Key:

Проверка Gateway по loopback
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?"}]
                  }'
Виртуальные ключи (следующий шаг)
После успешной проверки в foreground откройте LiteLLM Admin UI (litellm --config config.yaml --detailed_debug, затем путь /ui из документации) и создайте Virtual Key для Cursor и OpenClaw с бюджетами $5/$10 в месяц. При утечке отзываете только нужный Virtual Key, мастер-ключ OpenRouter не трогаете.

Шаг 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 — в разделе «сессия входа vs фоновый демон» FAQ по launchd на облачном Mac: Gateway и OpenClaw могут жить в отдельных plist и перезапускаться независимо.

Шаг 4: подключение Cursor, OpenClaw и скриптов

У всех клиентов меняются два параметра: Base URL указывает на ваш Gateway, API Key — Virtual Key (Master Key только для администрирования).

Cursor: Settings → Models → Override OpenAI Base URL → http://127.0.0.1:4000/v1 (если Cursor на ноутбуке, а Gateway на облачном Mac — сначала ssh -L 4000:127.0.0.1:4000 user@cloud-mac или адрес Tailscale). Имя модели — smart / fast, как model_name в config.yaml.

OpenClaw: в переменных окружения или конфиге по документации Gateway задайте OpenAI-совместимый провайдер: OPENAI_API_BASE=http://127.0.0.1:4000/v1, OPENAI_API_KEY=<virtual-key>. OpenClaw на том же облачном Mac — туннель не нужен; на Linux VPS либо перенесите LiteLLM на VPS, либо пробросьте внутреннюю сеть — не кладите Master Key в публичный compose-репозиторий VPS.

Обычные скрипты: любой код на 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)

Маршрутизация моделей и контроль расходов

Суть enterprise Gateway не в «умеем вызывать модели», а в «знаем, когда нужна дорогая». В персональном стеке зафиксируйте три правила:

  • По умолчанию fast: автодополнение, форматирование, простые вопросы — модель уровня gpt-4o-mini, обычно в десять раз дешевле Sonnet.
  • Явный переход на smart: архитектура, сложный рефакторинг, рассуждение по многим файлам — клиент или правила OpenClaw переключают на smart (с цепочкой fallback OpenRouter).
  • Двухуровневый бюджет: общий credit cap в консоли OpenRouter; per-client cap у Virtual Key в LiteLLM — «отключение» только когда срабатывают оба уровня.

OpenRouter принимает массив models для отката на уровне провайдера; model_list LiteLLM отделяет бизнес-алиасы (smart/fast) от реальных ID — смена модели в YAML, клиенты без правок.

Базовая линия безопасности (обязательно)

Типичные инциденты персонального Gateway — ключ в Git или Gateway в открытом интернете. Минимум — пять правил:

  • Секреты из .env и plist не в репозитории; в .gitignore.env, *.db, litellm.log.
  • LiteLLM только на 127.0.0.1; удалённый доступ — SSH -L или Tailscale; для нескольких пользователей — Nginx + mTLS спереди.
  • При утечке ключа OpenRouter — немедленная ротация в консоли; интеграция с GitHub Secret Scanning есть, но полагайтесь на активную ротацию.
  • Периодически sqlite3 litellm.db и сверка spend с OpenRouter Dashboard; аномальный трафик — отзыв Virtual Key.
  • FileVault на облачном Mac, SSH только по ключу; как при доставке шлюза на Linux, разделяйте аудит «изменений» и «секретов».
Частые ошибки
OpenRouter Key прямо в Cursor на ноутбуке плюс отдельный Gateway на облачном Mac — двойной счёт и два контура утечки. Единая точка входа: ноутбук только через туннель, весь LLM-трафик выходит через Gateway на облачном Mac.

FAQ

Можно без LiteLLM, напрямую в OpenRouter? Да, для одного человека и минимализма. Но вы теряете виртуальные ключи, единые логи и локальные алиасы маршрутов; с ростом числа клиентов Gateway всё равно понадобится.

Gateway на облачном Mac или на Linux VPS? Только LLM-прокси без macOS-инструментов — VPS дешевле; OpenClaw + MCP + автоматизация Xcode — облачный Mac с исполнением и Gateway на одной машине проще.

Что если OpenRouter недоступен? В model_list LiteLLM добавьте второй upstream (например, прямой Anthropic Key как emergency route) или временно направьте fast на free tier модель в каталоге OpenRouter.

Вырастет ли задержка? Лишний hop Proxy — обычно единицы–десятки миллисекунд; на фоне инференса LLM это несущественно. Узкое место чаще в выборе модели и регионе, а не в самом LiteLLM.

На облачном Mac mini Gateway и Agent удобнее на одной машине

Персональный AI Gateway ломается, когда плоскость управления на ноутбуке, исполнение в облаке, а ключи в переписке — три источника правды. LiteLLM Gateway и OpenClaw на VPSSpark Cloud Mac mini M4: единая память Apple Silicon спокойнее держит параллельных агентов и лёгкий Proxy; нативный Unix macOS даёт Homebrew, Python venv, launchd и локальный MCP без эмуляции macOS на Linux.

Mac mini на M-серии в простое часто укладывается в единицы ватт — Gateway 7×24 без угрызений по электричеству; Gatekeeper, SIP и FileVault снижают риск долгого хранения API-ключей по сравнению с обычной Windows-станцией. Вместо обрыва агента при сне ноутбука сведите «вход моделей + исполнение» к одному стабильному облачному Mac.

Если вы строите персональный AI Gateway на OpenRouter, VPSSpark Cloud Mac mini M4 — единая стартовая точка плоскости управленияузнайте о тарифах, чтобы ключи, маршруты и агенты наконец жили в одной «стойке».

Ограничено

OpenRouter upstream · Gateway на облачном Mac · Agent на той же машине

Виртуальные ключи · откат моделей · launchd 7×24 · ключи не в клиентах

На главную
Акция Смотреть тарифы