From f9afd79f3ecb0fd6ef1e0adeb0e4a10fdb5ecb07 Mon Sep 17 00:00:00 2001 From: Thierry Pouplier Date: Wed, 29 Apr 2026 02:19:24 +0000 Subject: [PATCH 1/5] fix: Add openai and matrix-nio dependencies for Hermes Matrix bridge --- ai/compose.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) mode change 100644 => 100755 ai/compose.yml diff --git a/ai/compose.yml b/ai/compose.yml old mode 100644 new mode 100755 index 460d44d..639df16 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -30,7 +30,10 @@ services: container_name: hermes restart: always # Gateway run enables the internal API server on port 8642 - command: gateway run + # Install openai and matrix-nio for Matrix bridge compatibility on startup + # Uses uv (modern Python package manager) with --system flag for venv installation + entrypoint: > + sh -c "/opt/hermes/.venv/bin/uv pip install openai matrix-nio[encryption] --system -q && /opt/hermes/.venv/bin/hermes gateway run" environment: - OLLAMA_HOST=http://ollama:11434 - API_SERVER_ENABLED=true @@ -38,9 +41,10 @@ services: - API_SERVER_HOST=0.0.0.0 - API_SERVER_KEY=hermes_local_key - GATEWAY_ALLOW_ALL_USERS=true - - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + - OPENROUTER_API_KEY=${OPEN...KEY} volumes: - /mnt/HoardingCow_docker_data/Hermes/data:/opt/data + - /mnt/HoardingCow_docker_data/Hermes/venv:/opt/hermes/.venv devices: - /dev/kfd:/dev/kfd - /dev/dri:/dev/dri -- 2.49.1 From a404f5e2c44411fac1c88fe07e9af724458012e2 Mon Sep 17 00:00:00 2001 From: Thierry Pouplier Date: Wed, 29 Apr 2026 02:43:35 +0000 Subject: [PATCH 2/5] fix: Correct OPENROUTER_API_KEY variable name --- ai/compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ai/compose.yml b/ai/compose.yml index 639df16..72ebf85 100755 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -41,7 +41,7 @@ services: - API_SERVER_HOST=0.0.0.0 - API_SERVER_KEY=hermes_local_key - GATEWAY_ALLOW_ALL_USERS=true - - OPENROUTER_API_KEY=${OPEN...KEY} + - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} volumes: - /mnt/HoardingCow_docker_data/Hermes/data:/opt/data - /mnt/HoardingCow_docker_data/Hermes/venv:/opt/hermes/.venv -- 2.49.1 From 2aab06cc1a76b2b13400453f318fbc97b80d061f Mon Sep 17 00:00:00 2001 From: Thierry Pouplier Date: Wed, 29 Apr 2026 03:34:15 +0000 Subject: [PATCH 3/5] fix: use mautrix[encryption] instead of matrix-nio for Matrix bridge The Hermes Matrix gateway uses the mautrix SDK, not matrix-nio. This fixes E2EE support by installing the correct library. Refs: PR #2 --- ai/compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ai/compose.yml b/ai/compose.yml index 72ebf85..e96993f 100755 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -30,10 +30,10 @@ services: container_name: hermes restart: always # Gateway run enables the internal API server on port 8642 - # Install openai and matrix-nio for Matrix bridge compatibility on startup + # Install openai and mautrix[encryption] for Matrix bridge with E2EE support on startup # Uses uv (modern Python package manager) with --system flag for venv installation entrypoint: > - sh -c "/opt/hermes/.venv/bin/uv pip install openai matrix-nio[encryption] --system -q && /opt/hermes/.venv/bin/hermes gateway run" + sh -c "/opt/hermes/.venv/bin/uv pip install openai mautrix[encryption] --system -q && /opt/hermes/.venv/bin/hermes gateway run" environment: - OLLAMA_HOST=http://ollama:11434 - API_SERVER_ENABLED=true -- 2.49.1 From 64acf2c859933f2fb0d6374a8e78501da5202bd3 Mon Sep 17 00:00:00 2001 From: Hermes Date: Wed, 20 May 2026 14:05:45 -0400 Subject: [PATCH 4/5] Merge feat/add-paperclip into master: add Paperclip agent orchestrator services Brings in commits: 563ccc5 (paperclip), 37bf43c (Dockerfile), bce4032 (revert), 1eacc3c (Traefik ai_net fix) --- ai/compose.yml | 64 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/ai/compose.yml b/ai/compose.yml index 1db7831..f699af1 100644 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -44,7 +44,7 @@ services: - API_SERVER_HOST=0.0.0.0 - API_SERVER_KEY=hermes_local_key - GATEWAY_ALLOW_ALL_USERS=true - - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + - OPENROUTER_API_KEY=${OPEN...KEY} # ROCm for GPU-accelerated faster-whisper STT - HSA_OVERRIDE_GFX_VERSION=9.0.6 - HCC_AMDGPU_TARGET=gfx906 @@ -129,6 +129,62 @@ services: - "303" - "26" + paperclip-db: + image: postgres:17-alpine + container_name: paperclip-db + restart: always + environment: + POSTGRES_USER: paperclip + POSTGRES_PASSWORD: ${PAPERCLIP_DB_PASSWORD:?PAPERCLIP_DB_PASSWORD must be set} + POSTGRES_DB: paperclip + healthcheck: + test: ["CMD-SHELL", "pg_isready -U paperclip -d paperclip"] + interval: 5s + timeout: 5s + retries: 10 + volumes: + - /mnt/HoardingCow_docker_data/Paperclip/pgdata:/var/lib/postgresql/data + networks: + - ai_backend + + paperclip: + image: ghcr.io/paperclipai/paperclip:v2026.517.0 + container_name: paperclip + restart: always + ports: + - "127.0.0.1:3100:3100" + environment: + - HOST=0.0.0.0 + - PORT=3100 + - SERVE_UI=true + - DATABASE_URL=postgres://paperclip:***@paperclip-db:5432/paperclip + - BETTER_AUTH_SECRET=${PAPE...CRET must be set} + - PAPERCLIP_PUBLIC_URL=https://paperclip.lazyworkhorse.net + - PAPERCLIP_DEPLOYMENT_MODE=authenticated + - PAPERCLIP_DEPLOYMENT_EXPOSURE=private + volumes: + - /mnt/HoardingCow_docker_data/Paperclip/data:/paperclip + depends_on: + paperclip-db: + condition: service_healthy + networks: + - ai_net + - ai_backend + labels: + - "traefik.enable=true" + - "traefik.docker.network=ai_net" + + - "traefik.http.routers.paperclip-http.rule=Host(`paperclip.lazyworkhorse.net`)" + - "traefik.http.routers.paperclip-http.entrypoints=web" + - "traefik.http.routers.paperclip-http.middlewares=redirect-to-https" + + - "traefik.http.routers.paperclip-https.rule=Host(`paperclip.lazyworkhorse.net`)" + - "traefik.http.routers.paperclip-https.entrypoints=websecure" + - "traefik.http.routers.paperclip-https.tls=true" + - "traefik.http.routers.paperclip-https.tls.certresolver=njalla" + + - "traefik.http.services.paperclip.loadbalancer.server.port=3100" + networks: ai_net: external: true @@ -280,8 +336,8 @@ networks: # - /home/gortium/infra:/data/workspace/infra # environment: # - TZ=America/Toronto - # - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN} - # - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + # - OPENCLAW_GATEWAY_TOKEN=${OPEN...KEN} + # - OPENROUTER_API_KEY=${OPEN...KEY} # # Point to the sidecar browser # - BROWSER_CDP_URL=http://openclaw-browser:9222 # - BROWSER_EVALUATE_ENABLED=true @@ -326,7 +382,7 @@ networks: # - PGID=1000 # - PUBLIC_KEY_FILE=/config/ssh/authorized_keys # - SUDO_ACCESS=false - # - PASSWORD_ACCESS=false + # - PASSWORD_ACCESS=*** # volumes: # - /mnt/HoardingCow_docker_data/openclaw/ssh-config:/config # - /home/gortium/infra:/data/workspace/infra:ro -- 2.49.1 From b8dc4783b64a3a5d840c206638889c90bcddd757 Mon Sep 17 00:00:00 2001 From: Hermes Date: Wed, 20 May 2026 14:17:15 -0400 Subject: [PATCH 5/5] fix: add WORKDIR and httpx dependency to Hermes Dockerfile - Add explicit WORKDIR /opt/hermes after FROM instruction - Add httpx to pip install for OpenViking plugin support Acceptance: Docker image builds with WORKDIR=/opt/hermes and httpx available in the venv. --- ai/hermes/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ai/hermes/Dockerfile b/ai/hermes/Dockerfile index a6edcfc..269bcda 100644 --- a/ai/hermes/Dockerfile +++ b/ai/hermes/Dockerfile @@ -9,6 +9,8 @@ # ---------- Base: official Hermes image (system deps, npm, uv, Playwright) ---------- FROM nousresearch/hermes-agent:latest +WORKDIR /opt/hermes + # ---------- Overlay our forked source ---------- # Uses SSH agent forwarding from the build host (no key baked into image). # --exclude node_modules/.venv keeps the base image's pre-built layers intact. @@ -50,7 +52,7 @@ COPY --chmod=0755 --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/ # ---------- Piper TTS ---------- RUN . /opt/hermes/.venv/bin/activate && \ - uv pip install --no-cache-dir piper-tts sounddevice numpy && \ + uv pip install --no-cache-dir piper-tts sounddevice numpy httpx && \ mkdir -p /opt/hermes/.venv/share/piper/voices RUN /opt/hermes/.venv/bin/python3 /dev/stdin << 'PYEOF' -- 2.49.1