61 lines
2.3 KiB
YAML
61 lines
2.3 KiB
YAML
# Two-container Docker Compose: Hermes Agent + Hermes WebUI
|
|
#
|
|
# This runs the agent and web UI in separate containers connected via
|
|
# shared volumes. The WebUI installs the agent's Python dependencies
|
|
# at startup from the shared agent source volume.
|
|
#
|
|
# Usage:
|
|
# docker compose -f docker-compose.two-container.yml up -d
|
|
#
|
|
# The agent container runs the gateway (CLI, Telegram, cron, etc.).
|
|
# The WebUI container serves the browser interface on port 8787.
|
|
# Both share ~/.hermes for config, sessions, and state.
|
|
|
|
services:
|
|
hermes-agent:
|
|
image: nousresearch/hermes-agent:latest
|
|
container_name: hermes-agent
|
|
volumes:
|
|
# Persist config, state, sessions, skills, memory across restarts
|
|
- hermes-home:/root/.hermes
|
|
# Expose agent source so the WebUI can install dependencies from it
|
|
- hermes-agent-src:/opt/hermes
|
|
environment:
|
|
- HERMES_HOME=/root/.hermes
|
|
restart: unless-stopped
|
|
|
|
hermes-webui:
|
|
image: ghcr.io/nesquena/hermes-webui:latest
|
|
container_name: hermes-webui
|
|
depends_on:
|
|
- hermes-agent
|
|
ports:
|
|
- "127.0.0.1:8787:8787"
|
|
volumes:
|
|
# Same hermes home as the agent — shares config, sessions, state
|
|
- hermes-home:/home/hermeswebui/.hermes
|
|
# Agent source mounted where docker_init.bash expects it.
|
|
# At startup the init script runs:
|
|
# uv pip install /home/hermeswebui/.hermes/hermes-agent
|
|
# which installs the agent and all its Python dependencies.
|
|
- hermes-agent-src:/home/hermeswebui/.hermes/hermes-agent
|
|
# Workspace directory — browse and edit files from the WebUI.
|
|
# Adapt the host path to your project directory.
|
|
- ~/workspace:/workspace
|
|
environment:
|
|
- HERMES_WEBUI_HOST=0.0.0.0
|
|
- HERMES_WEBUI_PORT=8787
|
|
- HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui-mvp
|
|
# Match your host user's UID/GID for correct file permissions.
|
|
# In two-container setups the WebUI auto-detects UID/GID from the shared
|
|
# hermes-home volume, but you can override explicitly if needed (#668):
|
|
- WANTED_UID=${UID:-1000}
|
|
- WANTED_GID=${GID:-1000}
|
|
# Optional: set a password for remote access
|
|
# - HERMES_WEBUI_PASSWORD=your-secret-password
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
hermes-home:
|
|
hermes-agent-src:
|