Compare commits
10 Commits
feat/herme
...
3ba0345887
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ba0345887 | |||
| e607982b21 | |||
| 4627199217 | |||
| 3611d645db | |||
| 99ac8b5dcd | |||
| b517a65393 | |||
| 61a59dfac1 | |||
| 144678354f | |||
| 34b1cb83a0 | |||
| f8c2f864de |
31
.gitea/workflows/build-hermes.yml
Normal file
31
.gitea/workflows/build-hermes.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Build Hermes agent
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'ai/hermes/**'
|
||||
- 'ai/compose.yml'
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'ai/hermes/**'
|
||||
- 'ai/compose.yml'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
run: |
|
||||
git clone -b "${{ github.head_ref || github.ref_name }}" \
|
||||
https://gitea:${{ secrets.GITHUB_TOKEN }}@code.lazyworkhorse.net/gortium/compose.git .
|
||||
git log --oneline -3
|
||||
|
||||
- name: Build hermes image
|
||||
run: |
|
||||
cd ai
|
||||
docker compose build hermes 2>&1
|
||||
|
||||
- name: Verify image
|
||||
run: |
|
||||
docker run --rm ai-hermes /opt/hermes/.venv/bin/python --version 2>&1
|
||||
31
.gitea/workflows/build-ollama.yml
Normal file
31
.gitea/workflows/build-ollama.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Build ollama (gfx906)
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'ai/ollama/**'
|
||||
- 'ai/compose.yml'
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'ai/ollama/**'
|
||||
- 'ai/compose.yml'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
run: |
|
||||
git clone -b "${{ github.head_ref || github.ref_name }}" \
|
||||
https://gitea:${{ secrets.GITHUB_TOKEN }}@code.lazyworkhorse.net/gortium/compose.git .
|
||||
git log --oneline -3
|
||||
|
||||
- name: Build ollama image
|
||||
run: |
|
||||
cd ai
|
||||
docker compose build ollama --no-cache 2>&1
|
||||
|
||||
- name: Verify version
|
||||
run: |
|
||||
docker run --rm ollama/ollama:rocm-gfx906 ollama --version 2>&1
|
||||
@@ -31,6 +31,9 @@ services:
|
||||
ssh:
|
||||
- default
|
||||
container_name: hermes
|
||||
entrypoint: ["/bin/bash", "-c",
|
||||
"bash /opt/data/hermes-tools/install.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
|
||||
|
||||
@@ -68,7 +68,8 @@ ENV PATH="/opt/data/.local/bin:${PATH}"
|
||||
# Point browser tool to Playwright's Chromium (already in base image)
|
||||
ENV CHROME_EXECUTABLE=/opt/hermes/.playwright/chromium/chrome-linux/chrome
|
||||
|
||||
VOLUME [ "/opt/data" ]
|
||||
# Ensure tools directory and toolsets.py are writable by the hermes runtime user
|
||||
# so custom tools can be injected from the persistent volume at startup.
|
||||
RUN chown -R hermes:hermes /opt/hermes/tools /opt/hermes/toolsets.py
|
||||
|
||||
COPY --chmod=0755 fix-permissions.sh /opt/hermes/fix-permissions.sh
|
||||
ENTRYPOINT [ "/usr/bin/tini", "-g", "--", "/opt/hermes/fix-permissions.sh" ]
|
||||
VOLUME [ "/opt/data" ]
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Startup permission fix + TTS patch.
|
||||
# Runs as root before the entrypoint drops to the hermes user.
|
||||
set -e
|
||||
|
||||
HERMES_HOME="${HERMES_HOME:-/opt/data}"
|
||||
|
||||
# Fix ownership on critical writable directories
|
||||
chown -R hermes:hermes \
|
||||
"$HERMES_HOME/sessions" \
|
||||
"$HERMES_HOME/checkpoints" \
|
||||
"$HERMES_HOME/skills" \
|
||||
"$HERMES_HOME/memories" \
|
||||
"$HERMES_HOME/workspace" \
|
||||
"$HERMES_HOME/pastes" \
|
||||
"$HERMES_HOME/logs" \
|
||||
"$HERMES_HOME/cron" \
|
||||
"$HERMES_HOME/plans" \
|
||||
"$HERMES_HOME/hooks" \
|
||||
"$HERMES_HOME/cache" \
|
||||
2>/dev/null || true
|
||||
|
||||
# Fix data volume root ownership
|
||||
if [ "$(stat -c %u "$HERMES_HOME" 2>/dev/null)" != "$(id -u hermes)" ]; then
|
||||
chown hermes:hermes "$HERMES_HOME" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ---------- Patch tts_tool.py: replace Edge TTS with Piper ----------
|
||||
# Fallback runtime patch in case the volume's site-packages differ from the image.
|
||||
# Idempotent: if already patched, the script does nothing.
|
||||
PATCH_SCRIPT="/opt/hermes/patch_tts_tool.py"
|
||||
if [ -f "$PATCH_SCRIPT" ]; then
|
||||
echo "Applying TTS patch (Piper only, no Edge fallback)..."
|
||||
/opt/hermes/.venv/bin/python3 "$PATCH_SCRIPT" 2>&1 || true
|
||||
fi
|
||||
|
||||
# Chain to the official Hermes entrypoint
|
||||
exec /opt/hermes/docker/entrypoint.sh "$@"
|
||||
@@ -7,6 +7,8 @@ services:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__server__ROOT_URL=https://code.lazyworkhorse.net
|
||||
- GITEA__actions__ENABLED=true
|
||||
- GITEA__actions__DEFAULT_ACTIONS_URL=off
|
||||
- SSH_PORT=2222
|
||||
- SSH_LISTEN_PORT=2222
|
||||
# Enable Gitea Actions (act_runner required on host)
|
||||
@@ -44,6 +46,22 @@ services:
|
||||
# Internal Routing
|
||||
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
||||
|
||||
act_runner:
|
||||
image: gitea/act_runner:latest
|
||||
container_name: act_runner
|
||||
environment:
|
||||
- GITEA_INSTANCE_URL=https://code.lazyworkhorse.net
|
||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN}
|
||||
- GITEA_RUNNER_NAME=ai-host-runner
|
||||
- GITEA_RUNNER_LABELS=ubuntu-latest:docker://catthehacker/ubuntu:full-22.04,nixos-builder:docker://nixos/nix
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- vc_net
|
||||
restart: always
|
||||
depends_on:
|
||||
- gitea
|
||||
|
||||
networks:
|
||||
vc_net:
|
||||
external: true
|
||||
|
||||
Reference in New Issue
Block a user