FROM node:20-bookworm-slim

ARG HERMES_AGENT_REF=458a94e42568b332e8794ca8fbb8c8e1279160a3

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
      ca-certificates \
      curl \
      gcc \
      git \
      libffi-dev \
      python3 \
      python3-dev \
      python3-venv \
      ripgrep \
    && rm -rf /var/lib/apt/lists/*

RUN git clone --filter=blob:none https://github.com/NousResearch/hermes-agent.git /opt/hermes-agent \
    && git -C /opt/hermes-agent checkout "$HERMES_AGENT_REF" \
    && python3 -m venv /opt/hermes-agent/venv \
    && /opt/hermes-agent/venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel \
    && /opt/hermes-agent/venv/bin/pip install --no-cache-dir -e '/opt/hermes-agent[messaging]' \
    && /opt/hermes-agent/venv/bin/hermes version

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY index.html app.js style.css server.cjs api-gateway.cjs README.md ./
COPY login.html login.js login.css ./
COPY docker-entrypoint.sh ./
COPY lib/ ./lib/
COPY migrations/ ./migrations/

ENV NODE_ENV=production \
    HERMES_SETUP_UI_HOST=0.0.0.0 \
    HERMES_SETUP_UI_PORT=7843 \
    HOME=/home/hermes \
    HERMES_HOME=/home/hermes/.hermes \
    HERMES_EXE=/opt/hermes-agent/venv/bin/hermes \
    HERMES_DEFAULT_CONFIG=/opt/hermes-agent/cli-config.yaml.example \
    CODEX_HOME=/home/hermes/.codex \
    CLAUDE_CONFIG_DIR=/home/hermes/.claude \
    GEMINI_CONFIG_DIR=/home/hermes/.gemini \
    NO_COLOR=1 \
    HERMES_NO_TUI=1

RUN usermod -l hermes -d /home/hermes -m node \
    && groupmod -n hermes node \
    && chmod +x /app/docker-entrypoint.sh \
    && chown -R hermes:hermes /app /home/hermes /opt/hermes-agent

USER hermes

EXPOSE 7843 8645 8646

ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["node", "/app/server.cjs"]
