Hermes Agent — open-source-фреймворк от Nous Research (лицензия MIT) для self-hosted ИИ-агентов. В отличие от облачных ассистентов он живёт на собственном сервере, поддерживает персистентную память, автоматически генерирует скиллы по мере работы и подключается к 20 платформам: Telegram, Discord, Slack, WhatsApp, Signal, e-mail и другим. Ключевое отличие от большинства аналогов — отсутствие привязки к конкретному провайдеру модели: агент принимает любой OpenAI-совместимый эндпоинт.

Автор полтора года использовал OpenClaw для своего агента по имени Паспарту — бота, который отвечает в Telegram, помнит проекты, ходит в интернет, отправляет письма и ведёт календарь. Архитектурное сходство двух фреймворков (скиллы как папки с SKILL.md, память в Markdown, единый конфиг-файл) создало ложное ощущение простоты. На практике переезд занял почти день.

ГрабляПроблемаРешение
№1ufw enable без предварительного allow OpenSSH — блокировка SSH-доступаСначала ufw allow OpenSSH, потом ufw enable
№2apt full-upgrade обновляет ядро без перезагрузкиЯвный reboot после обновления
№3PEP 668: системный pip блокирует установку на Ubuntu 24.04Hermes — через pipx, библиотеки — pip install --break-system-packages
№4HTTP 401 из-за маршрутизации через OpenRouter вместо OpenAIЗадать model.base_url = https://api.openai.com/v1
№5Боевые ключи лежат в /opt/openclaw.env, а не в ~/.openclawЯвно копировать EnvironmentFile при миграции
№6Два агента с одним Telegram-токеном дают 409 ConflictОстановить старый сервис до запуска нового
№7AGENTS.md не переезжает без флага --workspace-targetВсегда указывать --workspace-target в команде migrate
№8Ключ Perplexity не входит в allowlist миграции секретовВручную добавить PERPLEXITY_API_KEY в .env
№9hermes 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.