# 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:
