feat: add self-hosted memory providers (OpenViking, Honcho, Holographic)
Some checks failed
Build Hermes agent / build (pull_request) Has been cancelled
Build ollama (gfx906) / build (pull_request) Has been cancelled

- Add OpenViking service (knowledge graph) using official GHCR image
- Add Honcho stack (user modeling): API + PostgreSQL pgvector + Redis
- Add Holographic config to Hermes (local SQLite, no server needed)
- Hermes: install httpx for OpenViking client
- Hermes: auto-generate config.yaml + honcho.json on first boot
- All data 100% local, zero cloud dependencies
This commit is contained in:
2026-05-11 19:02:36 -04:00
parent 8d1ae7e632
commit 01fbf2ab62
8 changed files with 308 additions and 4 deletions

View File

@@ -48,6 +48,14 @@ RUN apt-get update && \
# ---------- UV ----------
COPY --chmod=0755 --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/
WORKDIR /opt/hermes
# ---------- Memory provider dependencies ----------
# httpx: HTTP client for OpenViking plugin
# honcho-ai: already installed in upstream image (v2.1.1+)
RUN . /opt/hermes/.venv/bin/activate && \
uv pip install --no-cache-dir httpx
# ---------- Piper TTS ----------
RUN . /opt/hermes/.venv/bin/activate && \
uv pip install --no-cache-dir piper-tts sounddevice numpy && \

9
ai/hermes/config.yaml Normal file
View File

@@ -0,0 +1,9 @@
memory:
memory_enabled: true
user_profile_enabled: true
providers:
- holographic
- honcho
- openviking
flush_min_turns: 6
nudge_interval: 10

33
ai/hermes/honcho.json Normal file
View File

@@ -0,0 +1,33 @@
{
"enabled": true,
"apiKey": "",
"baseUrl": "http://honcho:8000",
"workspace": "hermes",
"peerName": "thierry",
"contextCadence": 2,
"dialecticCadence": 3,
"dialecticDepth": 2,
"dialecticReasoningLevel": "low",
"dialecticMaxChars": 600,
"recallMode": "hybrid",
"writeFrequency": "async",
"sessionStrategy": "per-directory",
"saveMessages": true,
"hosts": {
"hermes": {
"enabled": true,
"aiPeer": "hermes",
"recallMode": "hybrid",
"observation": {
"user": { "observeMe": true, "observeOthers": true },
"ai": { "observeMe": true, "observeOthers": true }
},
"dialecticDepth": 2,
"dialecticReasoningLevel": "low",
"dialecticMaxChars": 600,
"sessionStrategy": "per-directory",
"writeFrequency": "async",
"saveMessages": true
}
}
}