На арендованном Mac mini M4 в Канаде три популярных способа поставить CLI OpenClaw дают разные пути к бинарнику и разное поведение при обновлениях. Если дальше вы поднимаете Gateway на TCP 18789 под launchd, ошибка чаще всего не в самом шлюзе, а в том, что демон не видит тот же PATH, что интерактивный SSH. Ниже — сравнение install.sh, формулы Homebrew и глобального npm -g, практическое планирование памяти и диска под канадский узел и таблица «симптом → действие». Полный контур onboard, токена и LaunchDaemon см. в OpenClaw 2026 на удалённом Mac: скрипты установки и onboard, Gateway 18789, Token, LaunchDaemon, таблица логов и сценарии 7×24 на M4 в Канаде; для allow-list исходящего трафика полезно согласовать модель IP с Физический нативный IP: почему Mac Cloud тоже нуждается в «одном IP на машину».
Три пути установки: что меняется для оператора
Официальный install.sh обычно кладёт бинарник в предсказуемое место вне вашего менеджера пакетов и хорошо документируется релизами; удобно для «чистого» хоста без Homebrew. Homebrew даёт версионирование через brew, простые откаты формулой и единый префикс на Apple Silicon (/opt/homebrew), но обновление формулы может сдвинуть путь или потребовать brew link --overwrite. Глобальный npm ставит CLI в префикс Node (часто внутри $(npm root -g)/../bin) и сильнее зависит от того, какой Node вы выбрали — системный, nvm или отдельный установщик; это гибко для JS-команд, но хрупче для plist, если не зашить абсолютный путь.
| Метод | Плюсы | Риски под launchd |
|---|---|---|
install.sh |
Минимум зависимостей, явный runbook от вендора | Нужно вручную фиксировать каталог в ProgramArguments |
| Homebrew | Единый toolchain, простые обновления | PATH без login-shell: добавить /opt/homebrew/bin в plist или абсолютный путь |
npm install -g |
Быстрый цикл для JS-разработчиков | Несколько версий Node → несколько префиксов; легко вызвать «не тот» openclaw |
which openclaw и openclaw --version. Затем скопируйте абсолютный путь в plist или в первый аргумент обёртки shell с явным PATH=....
Планирование ресурсов: M4 в Канаде и порт 18789
Gateway на 18789 — это постоянный Node-процесс плюс очередь задач и иногда браузерная автоматизация. Для одного стабильного инстанса на M4 ориентиры такие: 16 ГБ RAM достаточно для лёгкого контура и редких пиков, если диск быстрый и swap не забивается логами; 24 ГБ комфортнее, когда рядом IDE-агент, несколько каналов и долгие сессии. Диск: держите минимум 30–40 ГБ свободными под кэш пакетов, артефакты и ротацию логов; для канадского узла с транстихоокеанским трафиком заранее решите, где хранить тяжёлые билды — локально или на отдельном томе. CPU M4 редко упирается в «сырые» гигагерцы; чаще упираются в память и в сетевые таймауты при удалённых вызовах.
Обновления и соседство версий
При brew upgrade или смене мажорной версии Node перепроверьте which openclaw: symlink мог указывать на другой каталог. Для npm полезна политика «один менеджер версий Node на машину» или явный префикс в plist. После обновления перезапустите LaunchAgent и сделайте пробный запрос к loopback Gateway, прежде чем открывать внешний доступ.
Если на одном хосте исторически накопилось два канала (например, сначала поставили через npm, потом добавили Brew-формулу), интерактивная оболочка может подхватывать тот бинарник, который раньше в PATH, а plist — другой. Для команды это выглядит как «на сервере всё зелёное, у дежурного красное». Единый runbook: один способ установки, один каталог для обновлений, один набор smoke-тестов после релиза.
Диск, npm-кэш и сетевой контур Канады
Глобальные установки npm активно используют кэш в домашнем каталоге; на удалённом Mac с ограниченным SSD имеет смысл периодически чистить npm cache и следить, чтобы логи Gateway не росли бесконтрольно. Сетевой контур для узла в Канаде обычно хорошо подходит североамериканским API и SaaS, но если ваш control plane живёт в Азии, закладывайте задержку в health check, чтобы не принимать краткие таймауты за «падение» шлюза. После любой чистки кэша или смены каталога логов снова проверьте права: демон должен писать туда же, куда пишет интерактивный пользователь онбординга.
npm prefix -g ls -l "$(npm prefix -g)/bin/openclaw"
Типичные ошибки после установки
| Симптом | Вероятная причина | Первое действие |
|---|---|---|
command not found: openclaw в plist, в SSH всё ок |
Урезанный PATH у launchd |
Абсолютный путь к CLI или EnvironmentVariables с /opt/homebrew/bin:... |
| Две разные версии в терминале и в демоне | Два менеджера: Brew и npm на разных Node | Выбрать один канал; удалить лишний symlink; перезагрузить job |
EACCES при глобальной установке npm |
Префикс в /usr/local без прав |
Сменить префикс на каталог пользователя или использовать Brew |
| Gateway стартует и сразу падает после обновления macOS | Устаревшие пути к Node после обновления Xcode CLT | Переустановить/обновить Node toolchain; обновить plist на новый which node |
| Высокий RSS процесса Node | Длинные сессии и кэш без лимитов | Поднять RAM тариф; ограничить параллелизм; чистить артефакты |
Итог
Выбор между install.sh, Homebrew и npm -g — это выбор кто владеет обновлениями и где лежит бинарник. Для OpenClaw 2026 на канадском M4 с Gateway 18789 зафиксируйте один канал установки, пропишите абсолютные пути в launchd, заложите запас RAM и диска под логи и кэш, а таблицу выше оставьте в runbook дежурства рядом с мониторингом порта и токена.