Files
lvmh/docker-compose.yml
buenosair 4755f6d1e3 feat(spawn): share host spawn-pi mesh + models.json with spawned containers
- bind $LVMH_HOST_PI_RUNTIME_DIR/spawn-pi -> /root/.pi/spawn-pi (rw) so
  container pi's join the host pi's node mesh (spawn_pi/list_pi_nodes/
  send_pi_message now reach across the host/container boundary)
- bind host models.json (when present) over the stale image-baked
  fallback so newly added catalog models resolve in spawns
2026-09-07 13:21:49 +00:00

51 lines
2.0 KiB
YAML

# lvmh daemon + worker builder context. Build worker image first (make worker-image).
services:
lvmh:
build:
context: .
dockerfile: daemon/Dockerfile
image: lvmh-daemon:latest
container_name: lvmh-daemon
restart: unless-stopped
ports:
- "8686:8686"
environment:
LVMH_TOKEN: ${LVMH_TOKEN}
ZAI_RENAUD_API_KEY: ${ZAI_RENAUD_API_KEY}
# How spawned containers reach the daemon: alias on the shared network.
LVMH_CONTAINER_LVMH_URL: ws://lvmh:8686/agent/ws
GITLAB_BASE_URL: https://git.westphal.fr
# host path of the pi config, so spawned containers can bind auth.json
# docker.sock bind semantics: bind sources resolve on the HOST, so
# this must be the HOST path of the pi config (auth.json etc.).
LVMH_HOST_PI_AGENT_DIR: ${LVMH_PI_AGENT_DIR:-/home/alarm/.dotfiles/pi/agent}
# host pi runtime dir (spawn-pi mesh: nodes + sockets), shared rw with
# spawned containers so host pi and container pi's form one mesh
LVMH_HOST_PI_RUNTIME_DIR: ${LVMH_PI_RUNTIME_DIR:-/home/alarm/.pi}
LVMH_SECRETS_DIR: /zdata/root/lvmh-secrets
LVMH_CLOAK_CACHE_DIR: /home/alarm/.cloakbrowser
LVMH_PLAYWRIGHT_CACHE_DIR: /home/alarm/.cache/ms-playwright
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
DEEPSEEK_KEY: ${DEEPSEEK_KEY:-}
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- lvmh-data:/data
- .:/app/build:ro # repo checkout (rsynced by deploy.sh)
# daemon rebuilds lvmh-worker from /app/build/docker/worker.Dockerfile
- ./web/dist:/app/web-dist:ro # web UI served from repo checkout
- ${LVMH_PI_AGENT_DIR:-/home/raph/.dotfiles/pi/agent}:/pi-dotfiles:ro
# read-only user pi config; POST /api/pi-config/resync bakes it into
# fresh worker+ops images
networks:
lvmh-net:
aliases: [lvmh]
volumes:
lvmh-data:
networks:
lvmh-net:
name: lvmh-net