2026: CI и AI Agent на одном удалённом Mac Mini M4:
пиковое окно будней, ночная сдача Agent, изоляция меток и матрица аренды M4 Pro в шести регионах

Если команда хочет на одной беарметал remote Mac mini M4 в Сингапуре, Токио, Сеуле, Гонконге, на востоке или западе США днём гонять Xcode / self-hosted Runner / Archive, а ночью — OpenClaw или другой AI Agent, первым ломается не вопрос «влезут ли два стека», а конкуренция портов симулятора, растянутая очередь сборок из‑за Agent, пересечение подписи и Keychain. Ниже — матрица ёмкости Go/No-Go, три шаблона временных окон, сужение меток Runner и чеклист отката в семь шагов, а также путь M4 / M4 Pro / расширение / второй узел в том же регионе и лестница посуточно → понедельно → помесячно. Цены и наличие — на странице тарифов NOVAKVM; заказ — на странице оформления; политика удалённых сессий — в центре помощи. Полезно читать вместе с материалом про GitHub Actions Runner и статьёй про несколько Workspace OpenClaw.

После прочтения вы сможете ответить: ① при каких сигналах запрещать сдачу машины Agent; ② как резать метки в пик будней, ночном батче и неделе заморозки релиза; ③ как откатываться по глубине очереди и базовым метрикам; ④ когда переходить на M4 Pro или параллельный узел в регионе, а не растягивать совместный режим. Поведение self-hosted Runner GitHub Actions и OpenClaw Gateway сверяйте с официальной документацией после каждого релиза.

Первая — неясная ответственность: CI и Agent меняют метки каждый со своей стороны, окно сдачи никто не подписывает, и в пик PR Agent всё ещё держит симулятор и кэш сборки. Вторая — ложная диагностика очереди: задержку списывают на «больше задач», хотя это конкуренция за ресурсы — на насыщенной машине ещё одна метка Runner может поднять ожидание с 12 до 35+ минут. Третья — перекрёстное окружение: один пользователь macOS и один Keychain для CI и Agent, сертификаты Archive и токены бота в одной связке, после окна остаётся полунастроенный след. Четвёртая — исчерпание симуляторов и портов: ночной Agent поднимает несколько инстансов или держит WebDriver, утром матрица XCTest ловит «device busy» и занятые порты. Пятая — несовпадение срока аренды: месячный топ‑тиер ради проверки «можно ли смешивать», а после пиковой недели платят за двойной резерв.

  • Дрейф меток: после сдачи не возвращают macos-ci, дневные job уезжают в окно Agent.
  • Нет запаса: во втором регионе нет Runner — сдача = единая точка отказа.
  • Agent без лимита времени: многодневные прогоны без чекпоинтов забивают диск и логи.
  • Секреты не разделены: ключи моделей, токены каналов и CI‑сертификаты в одном каталоге — откат болезненный.
  • Запись в неделю релиза: Agent трогает подписанные pipeline в freeze — риск неконтролируем.

«Совместный режим держится на окне времени + метках + изоляции секретов, а не на фразе „ночью CI выключим“.»

Перед переключением с «режима CI» на «сдачу Agent» используйте таблицу как жёсткий шлюз. Любая строка «блокировка» — стоп сдачи или сначала запасной узел.

Go/No-Go: сдача ёмкости CI → Agent на удалённом Mac (практика 2026)
Сигнал Можно сдать Блок / пауза
Запасной Runner в регионе ≥1 принимает smoke и hotfix Нет резерва — сдача = SPOF
Глубина очереди ≤ медиана истории × 1,2 >1,5× два часа подряд
Бюджет времени Agent ≤90 мин с чекпоинтом Без лимита или многодневно
Изоляция секретов Разные пользователи или Keychain Общие подпись и API‑файлы
Freeze релиза Только чтение (без записи/подписи) Запись в freeze‑неделю

Три шаблона окон (часовой пояс — основной у команды; пример для UTC+8 в будни):

Пик будней / ночной батч / неделя freeze релиза
Шаблон Интервал Метки CI Agent
Пик будней 10:00–19:00 Полный CI, сдача запрещена Стоп или read‑only health
Ночной срез 23:30–06:00 Снять macos-ci и inbound‑метки Сдача до 90 мин
Freeze релиза ±7 дней от релиза Archive/нотаризация монополия Только чтение, без write‑back в каналы

Сдача — не «остановили сервис», а аудируемое изменение. Шаги связывают метки, очередь, метрики и откат, чтобы после Agent CI не ехал в грязное окружение.

  1. Тикет изменения: hostname, окно сдачи, ответственные CI и Agent; в freeze — двойная подпись.
  2. Проверка запаса: второй Runner в регионе — один smoke, убедиться, что PR‑hotfix примут.
  3. Сузить inbound‑метки: убрать macos-ci в настройках org/repo — новые job не встают в очередь.
  4. Drain текущих job: дождаться завершения по SLA; Archive/нотаризацию не убивать.
  5. Базовая линия: глубина очереди, число running job, CPU, свободное место на системном томе.
  6. Сдача: старт Agent (OpenClaw Gateway и т.п.), смотреть наклон диска и занятость симуляторов.
  7. Обратный откат: стоп Agent, вернуть метки, повторить smoke; если очередь >1,3× базы — следующую сдачу не открывать.
runner-label-check.sh
#!/bin/bash
RUNNER_NAME="${1:-novakvm-m4-sg}"
gh api "repos/${GITHUB_REPOSITORY}/actions/runners" --jq \
  ".runners[] | select(.name==\"$RUNNER_NAME\") | .labels[].name"
test -z "$(gh api ... | grep -c macos-ci)" && echo "CI_LABELS_OFF"

Семантика меток и очереди self-hosted Runner — в документации GitHub; после релиза откройте:

https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners

Постоянная работа и перезапуск OpenClaw Gateway — по репозиторию OpenClaw:

https://github.com/openclaw/openclaw

Если и дневной пик CI, и ночной Agent должны держать SLA, один хост часто упирается в память и пул симуляторов. Ориентиры: M4 16GB/256GB — одна линия CI + редкий read‑only Agent; M4 24GB/512GB — средняя очередь + короткое окно Agent; M4 Pro 64GB/2TB — параллельные сборки и несколько Workspace Agent. При полной загрузке днём и ночью лучше второй узел в регионе или разделение ролей, чем растягивать окно сдачи на сутки.

Градации и границы «совместного режима»
Уровень Пик CI Ночной Agent Рекомендация
M4 16GB / 256GB 1–2 лёгких pipeline Read‑only или <30 мин Не держать полнофункциональный Agent ночами долго
M4 24GB / 512GB 3–4 средних очереди До 90 мин с чекпоинтом Разделить пулы симуляторов и DerivedData
M4 Pro 64GB / 2TB Archive + несколько тестов Несколько Workspace / пики каналов В неделю релиза — split или второй узел
Параллель в регионе Узел только CI Узел только Agent Убирает риск переключения сдачи

Приоритет одного региона: Runner, реестр артефактов, RTT к API моделей и стенды интеграции — в одной региональной семантике. Сингапур — ЮВА; Токио/Сеул — восточноазиатские дежурства; Гонконг — южнокитайская отладка; US East / US West — привычки восточного побережья и Кремниевой долины. Посуточно/понедельно хватает, чтобы проверить «окно сдачи + откат»; при стабильных наклоне и очереди — помесячно; в пиковую неделю временно добавьте второй узел.

Числа ниже — типичные диапазоны для ревью ёмкости, не паспортные цифры вендора.

  • Коэффициент раздувания очереди: при конкуренции за ресурсы лишняя метка Runner может поднять P50 ожидания с ~12 мин до 35+ мин на насыщенном хосте.
  • Потолок сдачи: задачи Agent без чекпоинта — ≤90 мин за раз, чтобы логи и симуляторы не ломали утренний CI.
  • Заблаговременность: смена сдачи и freeze — объявление за 24–48 ч и окно отката.
  • Запас: в регионе минимум 1 Runner под smoke; иначе сдача = нулевой резерв.

FAQ:

  • Q: Днём CI, ночью OpenClaw — можно? A: Да, при выполнении Go/No-Go, сужении меток и семишаговом откате.
  • Q: Очередь уже длинная — сдавать? A: Нет. Сначала снизьте параллелизм или добавьте запасной узел.
  • Q: Неделя релиза? A: Agent только read‑only; Archive/нотаризация монополизируют машину; без записи и смешанной подписи.
  • Q: Хватит посуточной аренды? A: На полный цикл сдача→откат — да; для устойчивого смешения — неделя → месяц.

Сравните альтернативы: общий виртуализированный Mac‑облако часто ломает «окно сдачи» из‑за шума соседей и неконтролируемых окон обслуживания; ноутбук «по совместительству» — из‑за сна и локальных остатков симулятора, откат не аудируется. Командам, которым нужны дневной iOS/macOS CI и ночной AI Agent на предсказуемом беарметале с шестью регионами и лестницей аренды, облачная аренда Mac mini NOVAKVM обычно выгоднее: выделенный Apple Silicon, метки Runner и параллель в регионе ведут от «одной ночи с Agent» к «нулевой перекрёстности в неделю релиза». Перед следующим изменением прикрепите к одному тикету таблицу Go/No-Go и семь шагов отката — это снижает инциденты и дрейф счёта лучше, чем спор «выключать ли CI ночью».