Hermes agent można instalować jako
- bezpośrednio na komputerze
- w kontenerze Dockera
Składa się z elementów:
- hermes konsola
- hermes webpanel (aplikacja webowa)
- hermes dekstop (aplikacja desktopowa)
W tym wpisie pokażę jak uruchomić Hermesa w kontenerze.
Konfiguracja w Docker
Ponieważ chcę aby Hermes potrafił gadac i słuchać to muszę skonfigurować audio. W maszynie na jakiej instaluję Hermesa mam kartę audio, co można sprawdzić poleceniem:
#aplay -l
Powinno pokazać się coś jak niżej:
Sprawdzimy jeszcze zawartość katalogu „urządzeń” audio:
#ls -l /dev/snd
Jeszcze jest wymagany plik ’.env’ ze zmiennymi środowiskowymi (albo można je umieścić w docker compose) przykładowo taki:
ANTHROPIC_API_KEY=twoj-klucz GOOGLE_API_KEY=twoj-klucz OPENAI_API_KEY=twoj-klucz OPENROUTER_API_KEY=twoj-klucz HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=ZAQ!2wsx HERMES_UID=1000 HERMES_GID=1000
Teraz musimy utworzyć plik docker-compose.yaml. Znajda się w nim polecenia budowy kontenera na bazie obrazu ale dołączymy też kwestię audio.
- tworzymy katalog o nazwie np 'hermes’
- w tym katalogu tworzymy plik 'asound.conf’ o zawartości:
pcm.!default {
type pulse
hint {
show on
description "Default ALSA Output (PulseAudio)"
}
}
pcm.pulse {
type pulse
}
ctl.!default {
type pulse
}
- tworzymy też plik 'Dockerfile.audio’ o zawartości
FROM nousresearch/hermes-agent:latest USER root RUN apt-get update \ && apt-get install -y --no-install-recommends libasound2-plugins \ && rm -rf /var/lib/apt/lists/*
- i ostatecznie tworzymy plik budowy kontenera o nazwie 'docker-compose-audio.yaml’:
services:
hermes:
build:
context: .
dockerfile: Dockerfile.audio
image: hermes-agent-audio
container_name: hermes
restart: unless-stopped
command: gateway run
ports:
- "8642:8642" # gateway API
- "9119:9119" # dashboard (only reached when HERMES_DASHBOARD=1)
volumes:
- ~/.hermes:/opt/data/hermes
- /run/user/${HERMES_UID}/pulse:/run/user/${HERMES_UID}/pulse
# no-tmp: ok — path inside the container
- ~/.config/pulse/cookie:/tmp/pulse-cookie:ro
- ./asound.conf:/etc/asound.conf:ro
environment:
- HERMES_DASHBOARD=1
- HERMES_UID=${HERMES_UID}
- HERMES_GID=${HERMES_GID}
- XDG_RUNTIME_DIR=/run/user/${HERMES_UID}
- PULSE_SERVER=unix:/run/user/${HERMES_UID}/pulse/native
# no-tmp: ok — path inside the container
- PULSE_COOKIE=/tmp/pulse-cookie
# Uncomment to forward specific env vars instead of using .env file:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- GOOGLE_API_KEY=${GOOGLE_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
- HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin
- HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=ZAQ!2wsx
# - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
devices:
- /dev/snd:/dev/snd
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
- Teraz budujemy kontener i uruchamiamy całość:
sudo docker compose -f docker-compose-audio.yaml up
- Sprawdzimy czy działa poleceniem:
sudo docker exec -it hermes env | grep -E "PULSE|XDG|HERMES_UID"
- Jeśli tak to powinniśmy zobaczyć coś podobnego
Więcej informacji na temat budowy Hermesa znajduje się w jego dokumentacji.



