Hermes Agent — open-source-фреймворк от Nous Research (лицензия MIT) для self-hosted ИИ-агентов. В отличие от облачных ассистентов он живёт на собственном сервере, поддерживает персистентную память, автоматически генерирует скиллы по мере работы и подключается к 20 платформам: Telegram, Discord, Slack, WhatsApp, Signal, e-mail и другим. Ключевое отличие от большинства аналогов — отсутствие привязки к конкретному провайдеру модели: агент принимает любой OpenAI-совместимый эндпоинт.
Автор полтора года использовал OpenClaw для своего агента по имени Паспарту — бота, который отвечает в Telegram, помнит проекты, ходит в интернет, отправляет письма и ведёт календарь. Архитектурное сходство двух фреймворков (скиллы как папки с SKILL.md, память в Markdown, единый конфиг-файл) создало ложное ощущение простоты. На практике переезд занял почти день.
| Грабля | Проблема | Решение |
|---|---|---|
| №1 | ufw enable без предварительного allow OpenSSH — блокировка SSH-доступа | Сначала ufw allow OpenSSH, потом ufw enable |
| №2 | apt full-upgrade обновляет ядро без перезагрузки | Явный reboot после обновления |
| №3 | PEP 668: системный pip блокирует установку на Ubuntu 24.04 | Hermes — через pipx, библиотеки — pip install --break-system-packages |
| №4 | HTTP 401 из-за маршрутизации через OpenRouter вместо OpenAI | Задать model.base_url = https://api.openai.com/v1 |
| №5 | Боевые ключи лежат в /opt/openclaw.env, а не в ~/.openclaw | Явно копировать EnvironmentFile при миграции |
| №6 | Два агента с одним Telegram-токеном дают 409 Conflict | Остановить старый сервис до запуска нового |
| №7 | AGENTS.md не переезжает без флага --workspace-target | Всегда указывать --workspace-target в команде migrate |
| №8 | Ключ Perplexity не входит в allowlist миграции секретов | Вручную добавить PERPLEXITY_API_KEY в .env |
| №9 | hermes gateway install под root требует --run-as-user root и интерактивных ответов | Использовать yes | hermes gateway install или systemctl enable --now |
Самая неочевидная проблема возникла на этапе настройки модели. Hermes по умолчанию роутит запросы через OpenRouter. Строка openai/gpt-5.4-mini интерпретируется не как «OpenAI, модель gpt-5.4-mini», а как «OpenRouter, модель openai/gpt-5.4-mini». Без ключа OpenRouter агент немедленно возвращает HTTP 401. Решение — две команды: явно задать имя модели без префикса и прописать base_url на api.openai.com/v1. После этого тестовый запрос hermes -z вернул PONG.
По умолчанию Hermes роутит запросы через OpenRouter — без явного base_url агент возвращает HTTP 401 даже при наличии OpenAI-ключа.
При переносе данных выяснилось, что боевые ключи (OpenAI, Telegram) хранились не в директории ~/.openclaw, а в отдельном файле /opt/openclaw.env, который systemd подключал как EnvironmentFile. Без явного копирования этого файла миграция секретов не находит ни одного ключа. Ещё одна ловушка — Telegram допускает только одного активного слушателя на токен: если старый OpenClaw и новый Hermes опрашивают бота одновременно, платформа отвечает 409 Conflict и сообщения начинают теряться. Правило простое: сначала остановить старый сервис, потом запускать новый.
Встроенная команда hermes claw migrate с флагами --preset full --migrate-secrets переносит память, персону, скиллы, провайдеров, MCP, TTS, allowlist и токены платформ. Однако она не переносит историю чатов и молча пропускает файл AGENTS.md с инструкциями воркспейса, если не указан флаг --workspace-target. Ключ Perplexity для веб-поиска также не входит в allowlist миграции и требует ручного добавления в.env.
История переписки потребовала отдельного скрипта: OpenClaw хранит сессии как.jsonl-логи, Hermes — в SQLite с полнотекстовым поиском. Скрипт парсит каждый.jsonl, пропускает служебные события и checkpoint-файлы, делает прямой INSERT в state.db с сохранением оригинальных epoch-таймстемпов. После проверки PRAGMA integrity_check на копии базы автор прогнал конвертацию на боевой БД при остановленном gateway. Результат: 16 сессий, 9 315 сообщений, реальные даты, полнотекстовый поиск работает.
На Ubuntu 24.04 дополнительно проявляется ограничение PEP 668: системный pip отказывается устанавливать пакеты в «externally-managed-environment». Для самого Hermes используется pipx, для отдельных библиотек — pip install --break-system-packages. Установщик hermes gateway install под root требует явного флага --run-as-user root и задаёт интерактивные Y/N-вопросы — при запуске вне TTY это блокирует установку. Обход: yes | hermes gateway install или прямой запуск через systemctl enable --now hermes-gateway.


