Руководство по развёртыванию 2026-05-07

2026: OpenClaw × Ollama — локальный вывод на удалённом физическом Apple Silicon Mac через ZoneMac: параллельная маршрутизация шлюза, установка, загрузка весов и конфликты портов (фрагмент openclaw.json + FAQ)

Командам, которые запускают OpenClaw на безголовых физических Mac, нужны предсказуемые локальные токены без поломки проб здоровья шлюза. Здесь — воспроизводимый путь установки, дисциплина загрузки GGUF, фрагмент параллельной маршрутизации для openclaw.json, матрица конфликтов портов 11434 и 18789, семь исполняемых шагов, ориентиры для отчётов и FAQ; плюс перекрёстные материалы по MCP на том же узле и TCO пула Mac.

2026 OpenClaw и Ollama — локальный вывод на удалённом Apple Silicon шлюзе ZoneMac

Вводное резюме

Операторы, которые совмещают Ollama и шлюз OpenClaw на арендованном узле ZoneMac с Apple Silicon, чаще всего сталкиваются с тремя сюрпризами: «тихим» давлением на диск при параллельных ollama pull, неоднозначным loopback при SSH-форвардах и гонками порядка биндинга между inference (11434) и диагностикой шлюза (18789).

После прочтения у вас будет готовый к копированию фрагмент openclaw.json для локального приоритета с ограниченным облачным резервом, таблица разбора портов и проверки приёмки, переживающие перезагрузку под launchd.

Сначала зафиксируйте региональные RTT и потери, чтобы не списывать задержку модели на перегруженный канал. Для связки шлюза с инструментами и протоколами MCP на том же Mac см. материал: OpenClaw на удалённом Mac — MCP stdio и Streamable HTTP (runbook + FAQ).

Три типичных сбоя на безголовых шлюзах

  1. Диск и unified memory. Пики распаковки крупных GGUF совпадают с ротацией JSONL шлюза; снимки APFS или агрессивный параллелизм могут «подвесить» оба сервиса без явного баннера OOM.
  2. Скрытый egress и дрейф комплаенса. Локальный вывод убирает облачные токены, но плагины всё ещё могут вызывать внешние API — политику исходящего трафика держите ортогональной к выбору модели.
  3. Семантика портов. Успешный curl к 11434 на узле не доказывает, что с ноутбука вы попали в тот же процесс; пробы 18789 нельзя смешивать с трафиком модели при автоматизации health-check.

Матрица маршрутизации (строго локально / гибрид / только облако)

Выберите режим до правки конфигов: смена адресов прослушивания после факта аннулирует заявки в firewall и рецепты SSH-jump.

Профиль Когда выбирать Биндинг Ollama Резерв OpenClaw
Строго локально Данные не должны покидать RAM/диск; политика air-gapped 127.0.0.1:11434 Отключён — fail-closed при промахе
Гибрид (рекомендуется) Компромисс цена/латентность; всплеск в облако по глубине очереди 127.0.0.1:11434 Тайм-аут ≤ 8 с, затем облачный маршрут
Облако в приоритете На узле не хватает RAM под целевой контекст Опционально только для dev Облачные upstream-модели по умолчанию

Семишаговый воспроизводимый runbook

  1. Заморозьте сетевую приёмку. Зафиксируйте медиану RTT, p95 джиттера и потери за 60 с до региона шлюза; медиана RTT >120 мс — предупреждающая зона для интерактивных циклов с инструментами.
  2. Установите Ollama (ARM64) и закрепите loopback. Экспортируйте OLLAMA_HOST=127.0.0.1:11434 в том же окружении, что и plist launchd, чтобы после перезагрузки не вернулся wildcard.
  3. Загрузка с сериализацией. Один ollama pull за раз; по df -h держите ≥15% свободного места после распаковки; теги фиксируйте в git для воспроизводимости.
  4. Слейте параллельные бэкенды. Используйте JSON-фрагмент ниже: локальный маршрут с приоритетом 10, облачный — 50, с maxConcurrency на маршрут, чтобы ограничить конкуренцию за Metal/ANE.
  5. Две метки launchd. Разделите ollama serve и openclaw gateway; на нестабильном питании ThrottleInterval ≥2 с.
  6. Докажите слушателей. lsof -nP -iTCP:11434 -sTCP:LISTEN и lsof -nP -iTCP:18789 -sTCP:LISTEN; если пусто — читайте stderr, а не только код выхода.
  7. Doctor и минимальный generate. openclaw doctor, затем короткий POST в Ollama и проверка, что в хвосте JSONL-аудита появляются request ID шлюза.

Фрагмент openclaw.json — параллельные бэкенды (иллюстративно)

Подставьте ключи под схему вашей сборки OpenClaw; смысл — упорядоченные маршруты, тайм-ауты и явные baseUrl, чтобы при инцидентах конфиг можно было быстро прогрепать.

{
  "models": {
    "router": {
      "strategy": "parallel-failover",
      "routes": [
        {
          "id": "ollama-local",
          "priority": 10,
          "provider": "openai-compatible",
          "baseUrl": "http://127.0.0.1:11434/v1",
          "model": "llama3.1:8b",
          "timeoutMs": 8000,
          "maxConcurrency": 2
        },
        {
          "id": "cloud-overflow",
          "priority": 50,
          "provider": "anthropic",
          "model": "claude-3-5-sonnet-20241022",
          "timeoutMs": 20000,
          "maxConcurrency": 6
        }
      ]
    }
  },
  "gateway": {
    "bind": "127.0.0.1",
    "port": 18789,
    "healthPath": "/health"
  }
}

Если ваша дистрибуция вкладывает поля шлюза иначе, сохраняйте инвариант: Ollama на loopback; публичный ingress (если нужен) завершается на nginx/traefik с TLS и проксируется на 127.0.0.1 — сырой Ollama на границе арендатора без allowlist не оставляйте.

Ориентиры для отчётов и постмортемов

  • 8 с — типичный тайм-аут локального маршрута перед переливом в облако в гибридном режиме (настраивается под SLA).
  • 11434 — порт HTTP API Ollama по умолчанию; 18789 — часто порт управления шлюзом OpenClaw: оба должны быть в runbook.
  • ≥1,3× от заявленного размера GGUF свободно на APFS перед pull на томе, где же пишутся аудит-логи.
  • 2 одновременных локальных генерации — консервативный старт для узлов ~16 ГБ unified memory совместно с нагрузками уровня Xcode.

FAQ

Должен ли Ollama слушать только 127.0.0.1, если OpenClaw на том же Mac?

Для типичных безголовых шлюзов — да: привязка к loopback и, при редкой потребности в LAN, обратный прокси с аутентификацией вместо открытого API.

Почему connection refused на 18789, а 11434 отвечает?

Разные демоны. Смотрите коды выхода launchd, пути plist и запросы macOS privacy к бинарнику шлюза — Ollama при этом может быть полностью здоров.

Как не упереться в «диск полон» при pull и ротации JSONL?

Сериализуйте pull, мониторьте свободное место непрерывно и вынесите тяжёлый OLLAMA_MODELS на отдельный том, если аудит растёт быстро.

Отменяет ли параллельная маршрутизация исходящие политики?

Нет. Оставляйте allowlist доменов, песочницу и human-in-the-loop; локальные модели снижают счёт в облаке, но не периметр безопасности.

Почему Mac mini на Apple Silicon — самая ровная площадка для этого стека

Ollama и OpenClaw выигрывают от высокой пропускной способности памяти и тихих термиков: на Apple Silicon CPU, GPU и Neural Engine делят один пул памяти, без «перекидывания» по PCIe, как на многих компактных x86-сборках. macOS даёт launchd, низкую частоту падений и предсказуемый POSIX-инструментарий — это важно, когда шлюз должен работать ночью без KVM.

Безопасность: Gatekeeper, SIP и FileVault дают глубину защиты на машине, где лежат ключи API и локальные веса. По совокупной стоимости владения класс Mac mini потребляет порядка 4 Вт в простое при всё ещё доступном inference — заметно ниже многих башен с дискретной GPU в холостом режиме.

Если нужен тот же гибридный маршрут на железе, рассчитанном на бесшумную работу 7×24, Mac mini с Apple Silicon — сбалансированная отправная точка: посмотрите узлы ZoneMac и перенесите runbook в продакшен.

Для сравнения покупки и мультирегиональной аренды пула Mac с трёхлетним TCO см. 2026: трансграничные команды Apple — Mac mini или аренда удалённых узлов (TCO + матрица).

Узлы Apple Silicon

Арендуйте физический Mac‑шлюз под OpenClaw

ZoneMac предоставляет выделенные хосты Apple Silicon со стабильностью, на которую рассчитан этот runbook: loopback по умолчанию, запас под веса Ollama и место под JSONL-аудит.

Низкое потребление в простое Усиление macOS Unified memory
Аренда macOS в облаке Шлюзы Apple Silicon
Получить сейчас