Свой AI-ассистент в Telegram. Работает 24/7 на VPS. Использует бесплатные модели — $0 за API. Единственная статья расходов — сам сервер. Ниже полная инструкция с нуля, даже если вы ни разу не открывали терминал.
Hermes Agent — open-source AI-агент от Nous Research. Подключается к Telegram (а еще к Discord, Slack, WhatsApp — но здесь разберем Telegram), работает на любом Linux-сервере и поддерживает десятки LLM-провайдеров, включая бесплатные (мы будем использовать OpenRouter). По сути, ваш личный ChatGPT-бот, только селф-хостинг и полный контроль.
Мы прогнали весь процесс установки на VPS от is*hosting. В гайде — каждый шаг, включая ошибки, на которые мы наступили, и способы их починить.
Заходите на is*hosting и берете тариф Medium VPS:
Цена: $24.99/мес (или $21.24/мес на годовом плане).
Почему Medium? Hermes тянет за собой Python, Node.js и фоновый процесс AI-шлюза, который висит в памяти постоянно. На Lite (1 ГБ RAM) будет тесно.
После оплаты на почту придут IP-адрес и root-пароль. Сохраните оба.
Больше мощности, меньше затрат. VPS с NVMe, 40+ локаций, с управлением или без — выбор за вами.
Mac: откройте Terminal (Cmd+Space → наберите «Terminal» → Enter).
Windows: скачайте Tabby или используйте PowerShell.
Введите:
ssh root@IP_ВАШЕГО_VPS
Замените IP_ВАШЕГО_VPS на реальный IP из письма. Пример:
ssh root@37.252.10.8
При первом подключении спросят: «Are you sure you want to continue connecting?» — пишете yes, жмете Enter.
Затем вставляете пароль. Пароль не отображается на экране — это нормально, так работает безопасность в терминале. Вставляйте и жмите Enter.
Когда увидите root@server:~# — вы внутри.
Одна команда ставит все — Python, Node.js, Git и сам Hermes:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
Дождитесь завершения. Инсталлер покажет прогресс по мере установки зависимостей.
Важно: официальный URL установки — на GitHub. В некоторых старых гайдах фигурирует hermes-agent.org/install.sh — этот адрес сломан и выдает ошибку syntax error near unexpected token. Используйте GitHub-ссылку выше.
После установки Hermes автоматически запустит Setup Wizard.
Визард проведет через настройку. Вот что выбирать на каждом экране:
Выберите Quick setup — provider, model & messaging и нажмите Enter.
Выберите OpenRouter (100+ models, pay-per-use) из списка.
Визард запросит API-ключ OpenRouter.
Вставьте его в терминал и нажмите Enter.
Визард покажет список моделей с ценами. Прокрутите вниз — бесплатные помечены как free. По состоянию на май 2026, рабочие бесплатные модели:
Можно также выбрать «Enter custom model name» внизу списка и ввести идентификатор модели вручную.
Имейте в виду: бесплатные модели на OpenRouter появляются и исчезают. Во время нашего тестирования deepseek/deepseek-chat-v3.1:free возвращала 404 (удалена из OpenRouter), google/gemini-2.0-flash-exp:free тоже не заработала. Nvidia Nemotron заработала с первого раза. Если выбранная модель не работает, переключить можно потом командой:hermes config set model.default MODEL_NAME
Выберите Keep current (local). VPS выполняет команды напрямую, контейнеры не нужны.
Выберите Set up messaging now (recommended).
Можно пропустить настройку Telegram и перейти к финальному экрану. У нас именно так и произошло. Telegram настроим руками в шагах 5 и 6.
До или во время визарда вам нужен токен Telegram-бота:
Храните токен в безопасности. Любой, у кого он есть, может управлять вашим ботом.
Если визард уже спрашивал токен Telegram — этот шаг выполнен. Если вы пропустили настройку, запустите:
hermes gateway setup
Откроется конфигурация мессенджеров. Выберите Telegram:
Дальше система:
Чтобы узнать свой Telegram user ID: отправьте любое сообщение боту @userinfobot — он ответит числовым ID.
Введите свой ID, чтобы бот работал только для вас. Или оставьте поле пустым для открытого доступа (ограничить можно позже).
Визард спросит:
«Start the gateway now?» — отвечайте Y
«Start automatically on login/boot as a systemd service?» — отвечайте Y
«Choose how the gateway should run in the background» — выберите System service. На VPS это правильный выбор: бот стартует автоматически при перезагрузке сервера.
«Run the system gateway service as which user?» — введите root
Готово. Gateway запущен.
Откройте Telegram. Найдите бота по username, который создали. Отправьте «hi».
Если все работает, бот ответит.
Кривой конфиг, не та модель, мусорные символы в YAML — ничего из этого не дает внятной ошибки. Зато алгоритм починки тоже один: логи → проверка конфига → правка → рестарт.
Самая частая ошибка. Бот работает, но LLM не отвечает.
Смотрим логи:
journalctl -u hermes-gateway -n 30 --no-pager
Что означают коды ошибок:
Переключить модель:
hermes config set model.default nvidia/nemotron-3-super-120b-a12b:free
sudo systemctl restart hermes-gateway
Во время нашего тестирования мы перебрали три модели, прежде чем нашли рабочую:
Бесплатные модели ротируются. Если ваша перестала работать, загляните на openrouter.ai/models и отфильтруйте по «free».
Подлый баг. Если вставить текст в nano из некоторых источников, невидимые UTF-8 символы могут оказаться в начале файла. Hermes пытается распарсить YAML, ломается на поврежденном фрагменте и грузится без основной модели. Все, что дальше по цепочке, перестает работать.
Как обнаружить:
head -c 20 /root/.hermes/config.yaml | xxd
Если первые байты — не 6d 6f 64 65 6c (слово model), перед ним мусор.
Как починить:
sed -i '1s/^[^a-zA-Z]*//' /root/.hermes/config.yaml
Затем проверьте через hermes config showБлок model: должен быть виден.
Общее правило: после любой ручной правки config.yaml всегда запускайте hermes config showчтобы убедиться, что Hermes действительно распарсил то, что вы написали. Визуальной проверки в nano недостаточно.
В config.yaml в блоке providers: есть поле api_key_envЭто имя переменной окружения, в которой лежит ключ, а не сам ключ.
Неправильно:
providers:
anthropic:
api_key_env: sk-ant-abc123... # ← сам ключ, НЕПРАВИЛЬНО
Правильно:
providers:
anthropic:
api_key_env: ANTHROPIC_API_KEY # ← имя переменной, правильно
Сам ключ в /root/.hermes/.env. Если вставить голый ключ в api_key_env, Hermes не выдаст ошибку, а просто не сможет аутентифицироваться и провалится на другого провайдера с пустым полем модели.
Hermes использует вспомогательные модели для внутренних задач: управление скиллами, сжатие сессий, триаж, апрувалы. По умолчанию они стоят в provider: auto — «используй то же, что и основная модель».
Если конфиг основной модели сломан, auto каскадирует отказ на все вспомогательные слоты. В логах начинают сыпаться HTTP 400 ошибки, даже если основной чат уже починен.
Фикс — задать явные модели для вспомогательных задач:
hermes config set auxiliary.compression.provider deepseek
hermes config set auxiliary.compression.model deepseek-v4-flash
Повторите для остальных слотов (title_generation, session_search и т.д.) или отредактируйте config.yaml напрямую:
auxiliary:
compression:
provider: deepseek
model: deepseek-v4-flash
title_generation:
provider: deepseek
model: deepseek-v4-flash
Если у основной модели большое контекстное окно (например, Claude Sonnet — 500k токенов), а у модели сжатия маленькое (например, Haiku — 200k), Hermes будет предупреждать при каждой сессии: «Compression model context smaller than threshold.»
Фикс:
hermes config set compression.threshold 0.2
Порог ставится на 20% от контекста основной модели — с запасом влезает в окно модели сжатия.
Если визард (или кривая правка конфига) выставил terminal.backend в ssh с адресом вашего же VPS, Hermes начнет пытаться SSH-иться сам в себя для выполнения команд.
Фикс:
hermes config set terminal.backend local
У Hermes есть встроенный сканер безопасности Tirith. Он перехватывает определенные паттерны — например, пайп curl в Python. Даже с включенным auto-approve Tirith может требовать подтверждения.
Если задачи бота включают получение данных с API и вы доверяете эндпоинтам:
hermes config set security.tirith_enabled false
Обратите внимание: Tirith и система апрувалов — это две разные системы. Отключение одной не отключает другую.
Когда Hermes запущен, вот ваш ежедневный набор команд:
sudo systemctl status hermes-gateway # статус gateway
sudo systemctl restart hermes-gateway # перезапуск после изменений конфига
journalctl -u hermes-gateway -n 50 # последние логи
hermes config show # проверить текущий конфиг (после каждой правки!)
hermes config set model.default MODEL # сменить модель
hermes gateway setup # перенастроить мессенджеры
hermes update # обновить до последней версии
hermes doctor # диагностика проблем
Тут у Hermes путаница. Есть две системы авторизации, и какая из них реально контролирует доступ — зависит от настройки.
Переменная TELEGRAM_ALLOWED_USERS в /root/.hermes/.env — настоящий привратник. Если она существует и заполнена, все, что в config.yaml, игнорируется.
Проверяем, что там сейчас:
grep -i TELEGRAM_ALLOWED /root/.hermes/.env
Чтобы добавить пользователя, редактируем .env:
nano /root/.hermes/.env
Находим TELEGRAM_ALLOWED_USERS и дописываем новый ID:
TELEGRAM_ALLOWED_USERS=154220189,987654321
Перезапускаем:
sudo systemctl restart hermes-gateway
Чтобы узнать ID нового пользователя: попросите его написать боту, затем найдите ID в логах:
journalctl -u hermes-gateway -n 30 | grep Unauthorized
В некоторых версиях Hermes allowed_chats читается из config.yaml:
telegram:
allowed_chats: '154220189,987654321'
Но если в .env задан TELEGRAM_ALLOWED_USERS, то config.yaml игнорируется. Не тратьте час на перебор вариантов YAML-синтаксиса — сначала проверьте .env.
В Hermes есть система pairing: новый пользователь пишет боту, получает код, а владелец подтверждает через hermes pairing approve telegram <КОД>Но pairing работает только когда allowlist пуст. Если в TELEGRAM_ALLOWED_USERS есть хоть одно значение — pairing отключен полностью.
Выберите один подход и придерживайтесь его. Allowlist в .env — самый простой.
У Hermes три места хранения настроек. Одна и та же настройка может лежать в нескольких местах. Когда что-то не работает, проверяйте все три:
Бесплатные модели OpenRouter — это:
Для личного использования и экспериментов вполне достаточно. Когда упретесь в лимиты, пополните $10 на OpenRouter и переключитесь на платную модель:
hermes config set model.default anthropic/claude-haiku-4.5
sudo systemctl restart hermes-gateway
Claude Haiku 4.5 стоит $1/$5 за миллион токенов — несколько долларов в месяц при обычном персональном использовании.
После этого гайда у вас есть:
Бот продолжает работать, даже когда ваш ноутбук выключен.
Когда освоитесь:
Полная документация: hermes-agent.nousresearch.com/docs