2026: OpenClaw × Ollama — локальный вывод на удалённом физическом Apple Silicon Mac через ZoneMac: параллельная маршрутизация шлюза, установка, загрузка весов и конфликты портов (фрагмент openclaw.json + FAQ)
Командам, которые запускают OpenClaw на безголовых физических Mac, нужны предсказуемые локальные токены без поломки проб здоровья шлюза. Здесь — воспроизводимый путь установки, дисциплина загрузки GGUF, фрагмент параллельной маршрутизации для openclaw.json, матрица конфликтов портов 11434 и 18789, семь исполняемых шагов, ориентиры для отчётов и FAQ; плюс перекрёстные материалы по MCP на том же узле и TCO пула Mac.
Вводное резюме
Операторы, которые совмещают 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).
Три типичных сбоя на безголовых шлюзах
- Диск и unified memory. Пики распаковки крупных GGUF совпадают с ротацией JSONL шлюза; снимки APFS или агрессивный параллелизм могут «подвесить» оба сервиса без явного баннера OOM.
- Скрытый egress и дрейф комплаенса. Локальный вывод убирает облачные токены, но плагины всё ещё могут вызывать внешние API — политику исходящего трафика держите ортогональной к выбору модели.
- Семантика портов. Успешный
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
- Заморозьте сетевую приёмку. Зафиксируйте медиану RTT, p95 джиттера и потери за 60 с до региона шлюза; медиана RTT >120 мс — предупреждающая зона для интерактивных циклов с инструментами.
- Установите Ollama (ARM64) и закрепите loopback. Экспортируйте
OLLAMA_HOST=127.0.0.1:11434в том же окружении, что и plistlaunchd, чтобы после перезагрузки не вернулся wildcard. - Загрузка с сериализацией. Один
ollama pullза раз; поdf -hдержите ≥15% свободного места после распаковки; теги фиксируйте в git для воспроизводимости. - Слейте параллельные бэкенды. Используйте JSON-фрагмент ниже: локальный маршрут с приоритетом 10, облачный — 50, с
maxConcurrencyна маршрут, чтобы ограничить конкуренцию за Metal/ANE. - Две метки launchd. Разделите
ollama serveиopenclaw gateway; на нестабильном питанииThrottleInterval≥2 с. - Докажите слушателей.
lsof -nP -iTCP:11434 -sTCP:LISTENиlsof -nP -iTCP:18789 -sTCP:LISTEN; если пусто — читайте stderr, а не только код выхода. - 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 + матрица).
Арендуйте физический Mac‑шлюз под OpenClaw
ZoneMac предоставляет выделенные хосты Apple Silicon со стабильностью, на которую рассчитан этот runbook: loopback по умолчанию, запас под веса Ollama и место под JSONL-аудит.