feat: add Honcho memory provider with PostgreSQL + pgvector stack
Add Honcho (https://github.com/plastic-labs/honcho) as a self-hosted memory infrastructure for stateful AI agents. Changes: - ai/honcho/Dockerfile: multi-stage build from Honcho GitHub source - ai/honcho/init.sql: CREATE EXTENSION vector for pgvector - ai/compose.yml: add honcho-db (pgvector/pgvector:pg17-trixie) and honcho services with ai_backend/ai_net networking and Traefik labels - build/honcho/config.toml: pre-configured for Ollama embeddings (nomic-embed-text via http://ollama:11434/v1), deriver/summary/dream disabled by default - env/.env.example.honcho: sample env vars (HONCHO_DB_PASSWORD, LLM_OPENAI_API_KEY) Usage: cp env/.env.example.honcho .env # edit secrets mkdir -p /mnt/HoardingCow_docker_data/Honcho cp build/honcho/config.toml /mnt/HoardingCow_docker_data/Honcho/config.toml docker compose -f ai/compose.yml up honcho
This commit is contained in:
@@ -185,6 +185,94 @@ services:
|
||||
|
||||
- "traefik.http.services.paperclip.loadbalancer.server.port=3100"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Honcho — Memory infrastructure for stateful AI agents
|
||||
# Self-hosted memory server with pgvector for embedding storage.
|
||||
# Defaults to Ollama for embeddings; configure LLM provider for full deriver
|
||||
# and summarization support.
|
||||
#
|
||||
# API port: 8000
|
||||
# Web: https://honcho.lazyworkhorse.net
|
||||
# Docs: https://github.com/plastic-labs/honcho
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
honcho-db:
|
||||
image: pgvector/pgvector:pg17-trixie
|
||||
container_name: honcho-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: honcho
|
||||
POSTGRES_USER: honcho
|
||||
POSTGRES_PASSWORD: ${HONCHO_DB_PASSWORD:?HONCHO_DB_PASSWORD must be set}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U honcho -d honcho"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
volumes:
|
||||
- /mnt/HoardingCow_docker_data/Honcho/pgdata:/var/lib/postgresql/data
|
||||
- ./honcho/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||
networks:
|
||||
- ai_backend
|
||||
|
||||
honcho:
|
||||
build:
|
||||
context: ./honcho
|
||||
dockerfile: Dockerfile
|
||||
container_name: honcho
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8000:8000"
|
||||
depends_on:
|
||||
honcho-db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DB_CONNECTION_URI: postgresql+psycopg://honcho:${HONCHO_DB_PASSWORD:?HONCHO_DB_PASSWORD must be set}@honcho-db:5432/honcho
|
||||
LOG_LEVEL: INFO
|
||||
LLM_OPENAI_API_KEY: ${LLM_OPENAI_API_KEY:-ollama}
|
||||
volumes:
|
||||
- /mnt/HoardingCow_docker_data/Honcho/config.toml:/app/config.toml
|
||||
networks:
|
||||
- ai_backend
|
||||
- ai_net
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=ai_net"
|
||||
|
||||
- "traefik.http.routers.honcho-http.rule=Host(`honcho.lazyworkhorse.net`)"
|
||||
- "traefik.http.routers.honcho-http.entrypoints=web"
|
||||
- "traefik.http.routers.honcho-http.middlewares=redirect-to-https"
|
||||
|
||||
- "traefik.http.routers.honcho-https.rule=Host(`honcho.lazyworkhorse.net`)"
|
||||
- "traefik.http.routers.honcho-https.entrypoints=websecure"
|
||||
- "traefik.http.routers.honcho-https.tls=true"
|
||||
- "traefik.http.routers.honcho-https.tls.certresolver=njalla"
|
||||
|
||||
- "traefik.http.services.honcho.loadbalancer.server.port=8000"
|
||||
|
||||
holographic-memory:
|
||||
build:
|
||||
context: ./holographic-memory
|
||||
image: holographic-memory:latest
|
||||
container_name: holographic-memory
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8100:8100"
|
||||
environment:
|
||||
- HOLOGRAPHIC_DB_PATH=/data/holographic/memory_store.db
|
||||
- HOLOGRAPHIC_PORT=8100
|
||||
- HOLOGRAPHIC_DEFAULT_TRUST=0.5
|
||||
volumes:
|
||||
- /mnt/HoardingCow_docker_data/HolographicMemory:/data/holographic
|
||||
networks:
|
||||
- ai_backend
|
||||
healthcheck:
|
||||
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8100/health')"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
networks:
|
||||
ai_net:
|
||||
external: true
|
||||
|
||||
Reference in New Issue
Block a user