AI / Automation

2026-05-28 Hermes Agent Telegram на арендованном Mac mini M4 (HK / JP / KR / SG / US)

На том же Mac mini M4, где уже собираются iOS-приложения по SSH, можно запустить Hermes Agent как Telegram-бота. Процесс шлюза (hermes gateway) хранит токен BotFather, применяет allowlist числовых ID пользователей и пересылает чат в цикл инструментов Hermes—утверждайте правки CI или задавайте вопросы по архитектуре с телефона без постоянно включённого ноутбука.

Раскрытие: MacXCode предоставляет арендованные облачные Mac на Apple Silicon в HK, JP, KR, SG и США. Hermes Agent — сторонний MIT-проект; Telegram и API моделей регулируются их поставщиками. Это операционная документация, а не рекомендация подписок.

Для serverless Modal/Daytona и near-idle: гайд Hermes Serverless Modal/Daytona.

Настройка шлюза Hermes Agent Telegram на арендованном облачном Mac mini M4

Зачем Telegram на builder-Mac

Telegram подходит для headless-аренды: шлюз по умолчанию использует исходящий long polling—Mac инициирует HTTPS к API Telegram, не открывая входящие порты на общем builder (в отличие от webhook с публичным HTTPS).

Типичные причины подключить Hermes к Telegram на lease-хосте:

  • дежурная triage—когда GitHub Actions или xcodebuild падает ночью, ответ с телефона, пока agent читает логи на NVMe.
  • разделение задачOpenClaw для автоматизации репозитория, Hermes для личного/ops-чата; параллельно только если принимаете два процесса шлюза (RAM и изоляция токенов).
  • миграция с messaging OpenClaw—в upstream README есть hermes claw migrate; перед двумя шлюзами на хосте 16 GB прочитайте матрицу Hermes vs OpenClaw vs OpenHuman.

В спецификациях Mac mini указано 16–24 ГБ unified memory. Заложите ~1–2 ГБ на hermes gateway и рабочий набор модели до параллельных тестов Xcode. Не коммитьте bot token в git.

Как устроен Telegram-шлюз

Hermes разделяет CLI-чат (hermes TUI) и мессенджинг (hermes gateway). Конфиг Telegram попадает в ~/.hermes/.env (или вывод мастера), логи — ~/.hermes/logs/gateway.log, на macOS опционально сервис launchd.

КомпонентПуть / командаРоль
Установкаcurl -fsSL …/install.sh | bashPython 3.11 + hermes CLI
Модель / authhermes setupAPI-ключи провайдера (BYO или Nous Portal)
Конфиг Telegramhermes gateway setupBot Токен + + TELEGRAM_ALLOWED_USERS
Тест на переднем планеhermes gatewayLong-polling bot до Ctrl+C
Службаhermes gateway installhermes gateway startmacOS launchd, Работает после logout
Проверкиhermes doctor, hermes gateway statusПроверка конфига и процессов

Поток данных (режим polling):

  1. Вы пишете боту в Telegram.
  2. Шлюз получает обновление через Telegram Bot API (исходящий poll).
  3. Цикл agent Hermes запускает инструменты на настроенном terminal backend (локально, Docker или SSH на том же хосте).
  4. Текст ответа (и опциональные вложения MEDIA:/path) возвращается через шлюз в Telegram.

Важные настройки безопасности: Upstream использует в TELEGRAM_ALLOWED_USERS числовые ID, а не @username. Любой с токеном бота может выдать себя за бота—относитесь как к API-ключу; при утечке — /revoke в BotFather.

Официально: документация Hermes Telegram (BotFather, режим приватности, webhooks).

BotFather и контроль доступа

Создать бота

  1. Открыть @BotFather/newbot.
  2. Задать отображаемое имя (напр. Builder Hermes) и username с окончанием bot.
  3. Скопировать токен вида 123456789:ABCdefGHIjklMNOpqrs…—в менеджер паролей, не в git.

Добавить ID в allowlist

Написать @userinfobot для числового ID (напр. 123456789). С TELEGRAM_ALLOWED_USERS Hermes отклоняет незнакомых.

Опциональное усиление на общих lease:

  • только allowlist одного пользователя—без wildcard «командных» ID, пока не ясен scope инструментов.
  • отдельный бот на среду (staging vs production lease)—утечка staging не должна затронуть prod workspace.
  • отключить группы, пока не проверен DM.

Настроить Hermes для Telegram

Интерактивно (рекомендуется)

hermes setup # сначала провайдер модели при новой установке hermes gateway setup # выбрать Telegram → вставить токен → разрешённые ID

Ручное редактирование ~/.hermes/.env

TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ TELEGRAM_ALLOWED_USERS=123456789 # Опциональная команда: TELEGRAM_ALLOWED_USERS=111111111,222222222

Права файлов 600 и исключение из ненадёжной синхронизации dotfile.

Smoke-тест на переднем плане:

hermes gateway

Отправьте hello в Telegram; ответ за секунды. Остановите Ctrl+C перед launchd.

Восемь шагов headless-развёртывания на Mac mini M4

  1. Установить Hermes — Официальный install.sh в учётной записи аренды (не root).
  2. Запустить hermes setup — Настроить провайдера модели; убедиться, что hermes doctor без ошибок.
  3. Создать токен BotFather — и получить числовой ID пользователя (разделы выше).
  4. Запустить hermes gateway setup — Выбрать Telegram; проверить токен и allowlist в ~/.hermes/.env.
  5. Тест на переднем планеhermes gateway, сообщение боту, безвредный инструмент (напр. pwd); Ctrl+C.
  6. Установить службуhermes gateway install, затем hermes gateway start (macOS launchd).
  7. Сохранить окружение для daemon — Ключи API в ~/.hermes/.env читаются launchd (тот же пользователь); при сбое только в фоне — заметки OpenClaw launchd PATH.
  8. Мониторингhermes gateway status, tail -f ~/.hermes/logs/gateway.log, после смены конфига — Telegram /new для сброса сессий.

Цитируемое правило эксплуатации:Один процесс шлюза может обслуживать несколько платформ (Telegram, Discord, Slack и т.д.)—отдельный daemon на каждое чат-приложение не нужен.

launchd и lease только по SSH

На macOS-lease hermes gateway install регистрирует пользовательский job launchd—аналогично openclaw onboard --install-daemon на этом блоге.

hermes gateway install hermes gateway start hermes gateway status tail -f ~/.hermes/logs/gateway.log

После разрыва SSH шлюз должен оставаться под тем же Unix-пользователем, что выполнял install. Если job остановился, проверьте:

  • launchctl list | grep -i hermes
  • ошибки TELEGRAM_BOT_TOKEN / auth в логе
  • убивает ли политика lease долгие user-agent при logout (редко на выделенном M4; чаще на общих shell)

Заметка Docker backend: При terminal.backend: docker файлы через MEDIA:/path должны быть на хостовом пути, читаемом шлюзом—not только в контейнере. Монтируйте тома, видимые с хоста, по upstream telegram.md.

Групповые чаты (опционально)

Режим приватности Telegram по умолчанию ВКЛ—в группе бот часто видит только /commands, ответы боту или трафик админов. Для большего контекста отключите приватность в BotFather (Bot Settings → Group Privacy → Turn off) и удалите/добавьте бота в каждой группе или сделайте его администратором.

Для «наблюдать, но не отвечать без @» см. TELEGRAM_OBSERVE_UNMENTIONED_GROUP_MESSAGES и разрешённые chat ID—сначала раздел групп в telegram.md.

Устранение неполадок

Симптом: бот не отвечает (тихий polling)

ПроверкаКоманда / исправление
Шлюз запущен?hermes gateway status; перезапуск hermes gateway start
Токен валиден?вставить из BotFather; при утечке /revoke
Пользователь не в allowlist?добавить числовой ID в TELEGRAM_ALLOWED_USERS и перезапустить шлюз
Сбой модели/auth?hermes doctor; сначала протестировать CLI hermes локально
Логиgrep -i error ~/.hermes/logs/gateway.log | tail -20

Симптом: 401 Unauthorized или Conflict: terminated by other getUpdates

  • 401: неверный или отозванный TELEGRAM_BOT_TOKEN.
  • Conflict: два процесса poll одного бота—остановите дубли hermes gateway или второй хост с тем же токеном.

hermes gateway stop pkill -f "hermes gateway" 2>/dev/null || true hermes gateway start

Симптом: на переднем плане OK, под launchd сбой

  • у launchd минимальное окружение—проверьте чтение ~/.hermes/.env и ключи провайдера.
  • сравните PATH в SSH и launchctl print gui/$(id -u) (macOS); выровняйте Node, если плагины вызывают shell.

Симптом: в группе только /commands

  • режим приватности BotFather всё ещё ON—выключить или сделать бота админом; заново добавить бота в группу.

FAQ

Hermes Telegram заменяет привязки Telegram OpenClaw?+
Это разные шлюзы. Миграция через hermes claw migrate возможна, но два бота на одном хосте дублируют RAM и рискуют конфликтом автоматизации. Один владелец messaging на lease.
Нужен ли публичный URL для Telegram?+
При long polling по умолчанию — нет. Webhook требует HTTPS ingress (Fly.io, Railway и т.д.)—на SSH-only Mac mini lease обычно не нужен.
Telegram на 16 GB M4 с Xcode CI?+
Да, если сериализовать тяжёлые задачи. Измеряйте memory_pressure на пиках archive + gateway; при необходимости приостанавливайте gateway во время больших матриц xcodebuild.
Достаточно ли bot token для защиты?+
Нет. Токен контролирует личность бота. Выполнение инструментов следует правам Hermes и scope terminal backend—блокируйте workspace, не запускайте gateway от root на multi-tenant.
Где официальная документация Telegram?+

Headless M4 для шлюза Hermes Telegram

SSH-first Apple Silicon в HK, JP, KR, SG и US—polling Telegram и launchd для работы 24/7.