Hermes Agent
Подключение Hermes Agent от Nous Research к Hubris: агент с памятью, навыками и чатом через Telegram или почту, в том числе на своём сервере.
Hermes Agent — открытый AI-агент от Nous Research. Работает с файлами и терминалом, сам формирует «навыки» из опыта, хранит память между сессиями и принимает задачи через Telegram, почту и другие мессенджеры. Подключается к любому OpenAI-совместимому провайдеру.
Требования
- Linux (в том числе VPS), macOS, WSL2 или Windows
- Python 3.14: установщик ставит свой, системный не нужен
- Аккаунт на hubris2.ru и API-ключ
Установка
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc # или source ~/.zshrcНа Windows без WSL — в PowerShell:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)Настройки Hermes лежат в ~/.hermes/ (на Windows — в %LOCALAPPDATA%\hermes\): ключи и пароли в .env, остальное в config.yaml.
Подключение к Hubris
Через мастер
hermes modelВыберите в списке Custom endpoint (enter URL manually) и ответьте на вопросы:
| Вопрос | Ответ |
|---|---|
| API base URL | https://api.hubris2.ru/v1 |
| API key | ваш ключ из личного кабинета |
| API mode | Chat Completions |
| Model | Hermes сам загрузит наш каталог и покажет список, выберите, например, anthropic/claude-haiku-4.5 |
| Context length | оставьте пустым, Hermes определит сам |
| Display name | любое, например Hubris |
| Reasoning effort | оставьте предложенное |
Мастер сохранит ключ в .env под именем HERMES_CUSTOM_API_HUBRIS_PW_API_KEY, а адрес и модель — в config.yaml. При первом запуске hermes setup тоже приводит к этому мастеру: выберите Full setup, затем шаг Model & Provider.
Через файлы конфигурации
~/.hermes/.env:
HUBRIS_API_KEY=sk-gw-...~/.hermes/config.yaml:
model:
default: anthropic/claude-haiku-4.5
provider: custom
base_url: https://api.hubris2.ru/v1
key_env: HUBRIS_API_KEYАдрес задаётся только полем base_url в config.yaml: строка OPENAI_BASE_URL в .env его не задаёт.
Проверка
hermes -z "Ответь одним словом: столица Франции?"Команда печатает только ответ модели. Интерактивный режим — просто hermes. Сменить модель: hermes model или /model внутри сессии.
На сервере: работа в фоне
Чтобы Hermes отвечал в мессенджерах и почте без открытого терминала, установите его шлюз службой:
hermes gateway install
sudo loginctl enable-linger $USER # служба не останавливается после выхода из SSH
hermes gateway start
hermes gateway statusИли службой системы, которая сама поднимается после перезагрузки сервера:
sudo hermes gateway install --system
sudo hermes gateway start --systemЖурнал: journalctl --user -u hermes-gateway -f (для службы системы — journalctl -u hermes-gateway -f). Платформы для шлюза подключаются в ~/.hermes/.env, как в разделах ниже; после правки — hermes gateway restart. Выбрать и настроить их можно и мастером: hermes gateway setup.
Telegram
- У @BotFather создайте бота (
/newbot), скопируйте токен. - У @userinfobot узнайте свой Telegram ID.
- Добавьте в
~/.hermes/.envи перезапустите шлюз:
TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather
TELEGRAM_ALLOWED_USERS=ваш_telegram_idПочта
Hermes читает входящие письма по IMAP и отвечает в той же переписке. Заведите для агента отдельный ящик: Hermes разбирает все новые письма в нём, а письма, пришедшие до запуска, пропускает.
Пример для Почты Mail.ru в ~/.hermes/.env:
EMAIL_ADDRESS=agent@mail.ru
EMAIL_PASSWORD=пароль_для_внешнего_приложения
EMAIL_IMAP_HOST=imap.mail.ru
EMAIL_IMAP_PORT=993
EMAIL_SMTP_HOST=smtp.mail.ru
EMAIL_SMTP_PORT=465
EMAIL_ALLOWED_USERS=ваш@адрес.ru
EMAIL_AUTHSERV_ID=значение_из_заголовка- Пароль. Обычный пароль от ящика не подойдёт. В Mail.ru: «Все настройки» → «Безопасность» → «Пароли для внешних приложений» → «Создать», доступ «Полный доступ к Почте»; к ящику должен быть привязан телефон (справка Mail.ru). В Gmail — пароль приложения, хосты
imap.gmail.comиsmtp.gmail.com, порт SMTP 587. EMAIL_ALLOWED_USERS— адреса, от которых агент принимает задачи, через запятую. Письма с других адресов он пропускает.EMAIL_AUTHSERV_ID: без него Hermes отбрасывает все письма. Откройте в ящике агента любое входящее письмо, посмотрите его служебные заголовки (в Mail.ru пункт «Служебные заголовки» в меню письма, в Gmail «Показать оригинал») и возьмите из верхней строкиAuthentication-Resultsтекст до первой;. У Gmail этоmx.google.com.
После правки .env перезапустите шлюз: hermes gateway restart.
Веб-дашборд
hermes dashboardОткрывается на http://127.0.0.1:9119, в нём управляют сессиями, памятью и навыками. Дашборд хранит API-ключи: на сервере не открывайте его наружу, заходите через SSH-туннель:
ssh -L 9119:localhost:9119 user@ваш-серверРекомендуемые модели
Hermes — агент с длинной сессией и многократными вызовами инструментов. Подойдут модели с хорошим tool calling:
| ID | Когда уместна |
|---|---|
anthropic/claude-haiku-4.5 | быстрые типовые задачи |
openai/gpt-4o-mini | универсальный выбор |
google/gemini-3.7-flash | мультимодальные сценарии, большой контекст |
Для сложных автономных задач (рефакторинг, длинные сессии) — Claude Sonnet/Opus из каталога. Каждый вопрос несёт около 12 тыс. токенов служебной инструкции с описанием инструментов, поэтому цена входных токенов у модели заметно влияет на расход.
Решение проблем
hermes: command not found после установки
source ~/.bashrc # или ~/.zshrcПроверьте, что ~/.local/bin в PATH: echo $PATH.
HTTP 401: Неверный API-ключ
- Ключ в
.envзаписан без пробелов и кавычек и начинается сsk-gw-. - Имя переменной совпадает с
key_envвconfig.yaml. Если настраивали мастером, ключ лежит вHERMES_CUSTOM_API_HUBRIS_PW_API_KEY.
provider 'custom' resolved without credentials
В config.yaml нет base_url. Допишите блок model: из раздела «Через файлы конфигурации». Строка OPENAI_BASE_URL в .env адрес не задаёт.
No usable credentials found for provider 'deepseek'
Hermes принял ваш провайдер за встроенный: так бывает, если назвать его именем встроенного (deepseek, openai). Укажите provider: custom и base_url, как в примере выше, а своему провайдеру не давайте имя встроенного. Модель DeepSeek задайте в default полным ID из каталога, например deepseek/deepseek-v4-flash.
rejected this request as malformed … HTTP 400
Это общая фраза Hermes для любого отказа 400. Причина — в тексте после Provider said: и в ~/.hermes/logs/agent.log; сам запрос виден в логах кабинета.
Ошибка про модель (model_not_found)
ID пишется полностью, с вендором, в точности как в каталоге: anthropic/claude-haiku-4.5, а не claude-haiku-4.5. Список — в каталоге или в мастере hermes model.
hermes doctor предупреждает о ключе или custom_providers
- «No API key found in .env»: doctor знает только встроенные имена переменных; на работу с Hubris не влияет.
- «Legacy custom_providers entry 'Hubris' has no providers: twin»: мастер дописал запись в старом формате; подключение работает и с ней.
Бот в Telegram или почта не отвечают
- Проверьте шлюз:
hermes gateway statusи журнал службы. - Telegram ID в
TELEGRAM_ALLOWED_USERSи адрес вEMAIL_ALLOWED_USERSзаписаны без пробелов и комментариев в той же строке (TOKEN=xyz # commentломает разбор: комментарий выносите на отдельную строку). - Почта: строки «Dropping sender» в журнале значат, что не задан или не совпал
EMAIL_AUTHSERV_ID.
Что дальше
- Каталог моделей — выбор по поддержке tool calling.
- Управление API-ключами — отдельный ключ под Hermes.
- Расходы — детализация сессий.
- OpenClaw — альтернативный агент для мессенджеров.
Обновлено:
