# kb-query secrets + host-local binds — copy to .env (gitignored) next to
# docker-compose.yml and fill in real values. Never commit .env.

# LAN IP of PIHA. The published port (8230) binds ONLY to this interface —
# never 0.0.0.0. Verify after host rebuilds: ip -4 addr.
LAN_BIND_IP=192.168.31.5

# asyncpg DSN for kb-postgres@PIHA. kb-query runs in its own Docker network
# (separate compose project from kb-postgres), so it reaches kb-postgres's
# published port over the host's LAN interface, not "localhost" — same
# reasoning as paperless-worker@SOLARIA reaching paperless@PIHA over LAN.
KB_DSN=postgresql://kb:CHANGE-ME@192.168.31.5:5433/kb

# Primary embed backend: Ollama @ SOLARIA (GPU, over Tailscale MagicDNS —
# same trick as llm-gateway's OLLAMA_URL). Optional: defaults to this value.
# EMBED_PRIMARY_URL=http://solaria:11434

# Fallback embed backend: ollama-piha on this host (services/ollama-piha/),
# reached over PIHA's LAN interface (same pattern as KB_DSN above). SOLARIA is
# powered off ~16 h/day — without this, /search is dead the whole time. Leave
# unset/empty to disable the fallback leg entirely.
EMBED_FALLBACK_URL=http://192.168.31.5:11434

# Backend labels used in logs and the /search "embed_backend" response field.
# Optional: defaults solaria / piha.
# EMBED_PRIMARY_NAME=solaria
# EMBED_FALLBACK_NAME=piha

# Fallback state machine tuning (plan §2 D2). Optional; defaults shown.
# EMBED_HEALTH_TTL_S=30        # how long an up/down verdict on SOLARIA is cached
# EMBED_HEALTH_TIMEOUT_S=1.5   # /api/tags probe timeout
# EMBED_PRIMARY_TIMEOUT_S=3    # hard timeout for a primary embed call

# Embedding model kb-query enforces as a startup invariant (plan §2 decision
# 2) against document_chunk.model / document_summary.embedding_model.
# Optional: defaults to bge-m3.
# EMBED_MODEL=bge-m3

# document_summary.model kb-query's cascade path pre-filters on (the
# compilation track, plan §2 D3). Optional: defaults to claude-haiku-4-5.
# SUMMARY_MODEL=claude-haiku-4-5
