From e4117cd3d50a0d298798bc403761421ac6c204f9 Mon Sep 17 00:00:00 2001 From: Hermes Date: Fri, 22 May 2026 13:02:23 -0400 Subject: [PATCH 1/3] fix: remove venv volume mount conflicting with entrypoint.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The volume mount at /mnt/HoardingCow_docker_data/Hermes/venv overrides the container's built .venv with an empty or stale host directory, causing entrypoint.sh line 62 to fail on 'source .venv/bin/activate' (set -e). The Docker image already builds a complete venv — no need to persist it. --- ai/compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ai/compose.yml b/ai/compose.yml index ca5f181..3126c2b 100755 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -61,8 +61,6 @@ services: - /mnt/HoardingCow_docker_data/Syncthing/telos-ro:/opt/data/telos-ro:ro # Syncthing-shared inbox — write tasks here, they sync to user's laptop - /mnt/HoardingCow_docker_data/Syncthing/telos-rw:/opt/data/telos-rw:rw - # Persist Python venv across container recreation (Matrix bridge deps, etc.) - - /mnt/HoardingCow_docker_data/Hermes/venv:/opt/hermes/.venv devices: - /dev/kfd:/dev/kfd - /dev/dri:/dev/dri From bce336c4fd1bd4f6c12d38df186e6515e2c88467 Mon Sep 17 00:00:00 2001 From: Hermes Date: Fri, 22 May 2026 13:04:43 -0400 Subject: [PATCH 2/3] feat: bake Matrix bridge deps into Docker image instead of volume mount - Add libolm-dev system dep (required by mautrix[encryption]) - Add mautrix[encryption] + openai pip packages to build - These were previously installed inline at container startup and persisted via the fragile venv volume mount (now removed) --- ai/hermes/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ai/hermes/Dockerfile b/ai/hermes/Dockerfile index c3a76fa..253b9b7 100644 --- a/ai/hermes/Dockerfile +++ b/ai/hermes/Dockerfile @@ -34,6 +34,7 @@ USER root RUN apt-get update && \ apt-get install -y --no-install-recommends \ libportaudio2 ca-certificates poppler-utils imagemagick \ + libolm-dev \ texlive-latex-base texlive-latex-extra texlive-fonts-recommended \ texlive-xetex texlive-science \ qemu-user-static binfmt-support emacs-nox && \ @@ -42,6 +43,12 @@ RUN apt-get update && \ # ---------- UV ---------- COPY --chmod=0755 --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/ +# ---------- Matrix bridge + extra pip deps ---------- +# Previously installed inline at container startup and persisted via volume mount. +# Now baked into the image so the fragile venv volume mount can be removed. +RUN . /opt/hermes/.venv/bin/activate && \ + uv pip install --no-cache-dir 'mautrix[encryption]' openai + # ---------- Piper TTS ---------- RUN . /opt/hermes/.venv/bin/activate && \ uv pip install --no-cache-dir piper-tts sounddevice numpy && \ From 45a224eb7fad685c7e9abee9b1a95d3514136e38 Mon Sep 17 00:00:00 2001 From: Hermes Date: Fri, 22 May 2026 13:22:58 -0400 Subject: [PATCH 3/3] fix: add missing command: gateway run to hermes service Without this, is empty and entrypoint.sh runs bare 'hermes' which defaults to interactive chat mode. With a non-TTY stdin this exits immediately with prompt_toolkit's 'Input is not a terminal' warning, causing a container restart loop. The profile gateways (run-multi-gateways.sh) were unaffected because the script passes 'gateway run' explicitly. --- ai/compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ai/compose.yml b/ai/compose.yml index 3126c2b..bc0cd4f 100755 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -35,6 +35,8 @@ services: "bash /opt/data/hermes-tools/install.sh && bash /opt/data/hermes-tools/run-multi-gateways.sh && exec /usr/bin/tini -g -- /opt/hermes/docker/entrypoint.sh \"$@\"", "hermes-entrypoint"] restart: always + # Gateway run enables the internal API server on port 8642 + command: gateway run environment: - OLLAMA_HOST=http://ollama:11434 - HERMES_DASHBOARD=1