Docker — платформа контейнеризации для запуска Hermes Agent в изолированном окружении. Образ содержит все зависимости (Python, Node.js, Playwright), а данные агента хранятся на смонтированном томе и сохраняются при обновлении контейнера.
Зачем Docker
- Изоляция — зависимости не конфликтуют с хостовой системой
- Быстрое обновление —
docker pullбез потери конфигурации - Переносимость — работает на Linux, macOS, Windows
- Управление ресурсами — ограничение памяти и CPU
Запуск Hermes в контейнере
Создайте директорию данных и запустите мастер настройки:
mkdir -p ~/.hermes
docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup
Для работы в режиме шлюза (Telegram, Discord, Slack):
docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run
Том /opt/data содержит конфигурацию, API-ключи, сессии, память и навыки. Данные на томе переживают пересоздание контейнера.
Terminal Backends
Hermes поддерживает несколько терминальных бэкендов — способов выполнения shell-команд агентом. Бэкенд выбирается через параметр terminal.backend в config.yaml или через hermes setup terminal.
local — локальный терминал
Бэкенд по умолчанию. Агент выполняет команды непосредственно на хостовой системе. Максимальная производительность, но нет изоляции — агент имеет полный доступ к файловой системе и сетью хоста.
terminal:
backend: local
cwd: /root/.hermes/workspace
timeout: 180
docker — изолированный контейнер
Агент работает на хосте, но все shell-команды выполняются внутри долгоживущего Docker-контейнера-песочницы. Контейнер сохраняется между вызовами инструментов и подагентами, навыки автоматически монтируются как тома только для чтения. Рекомендуется для заданий, требующих изоляции от хостовой системы.
terminal:
backend: docker
docker:
image: nousresearch/hermes-agent:latest
volumes:
- ~/.hermes:/opt/data
shm_size: 1g
cwd: /opt/data/workspace
timeout: 180
Преимущества Docker-бэкенда:
- Безопасность — файловая система хоста изолирована, монтируются только указанные тома
- Воспроизводимость — одинаковое окружение независимо от хоста
- Ограничение ресурсов — через
--memory,--cpus - Сетевая изоляция — контейнер может работать в отдельной Docker-сети
ssh — удалённый сервер
Команды выполняются на удалённом сервере по SSH. Подходит для работы с мощными серверами или GPU-инстансами, когда локальные ресурсы ограничены.
terminal:
backend: ssh
ssh:
host: gpu-server.example.com
user: deploy
key: ~/.ssh/id_ed25519
cwd: /home/deploy/workspace
timeout: 180
modal — облачные функции
Бэкенд использует Modal для запуска команд в серверлесс-контейнерах. Автоматическое масштабирование, оплата по использованию. Подходит для ресурсоёмких задач (ML-тренировки, бенчмарки).
terminal:
backend: modal
modal:
image: nousresearch/hermes-agent:latest
gpu: A100
timeout: 300
Конфигурация терминала
Параметры секции terminal в config.yaml:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
terminal.backend |
string | local |
Бэкенд: local, docker, ssh, modal |
terminal.cwd |
string | workspace профиля | Рабочая директория по умолчанию |
terminal.timeout |
int | 180 |
Таймаут выполнения команды (секунды) |
Настройка через CLI:
hermes setup terminal # интерактивный мастер
hermes config set terminal.backend docker
hermes config set terminal.cwd /opt/data/workspace
hermes config set terminal.timeout 300
Docker Compose
services:
hermes:
image: nousresearch/hermes-agent:latest
restart: unless-stopped
command: gateway run
ports:
- "8642:8642"
volumes:
- ~/.hermes:/opt/data
environment:
- HERMES_DASHBOARD=1
Подключение к локальным моделям
Для vLLM или Ollama используйте одну Docker-сети и имя контейнера как хост:
model:
provider: custom
model: my-model
base_url: http://vllm:8000/v1
api_key: "none"
Устранение неполадок
- Контейнер сразу завершается — проверьте
docker logs hermes - Ошибки доступа —
chmod -R 755 ~/.hermes - Браузер не работает — добавьте
--shm-size=1g - Docker-бэкенд не видит файлы — проверьте монтирование томов в конфигурации
- SSH-бэкенд таймаутит — увеличьте
terminal.timeoutили проверьте SSH-ключ