Files
glpi-neural-brain/docker-compose.yml
groot b3bd3d5ffd
All checks were successful
release-tag / release-image (push) Successful in 2m24s
BugFix
2026-08-05 11:58:25 +02:00

96 lines
5.1 KiB
YAML

services:
brain:
build: .
container_name: glpi-neural-brain
restart: unless-stopped
ports:
- "8090:8090"
environment:
BRAIN_LISTEN_ADDR: ":8090"
BRAIN_DATA_DIR: /app/data
BRAIN_KNOWLEDGE_DIRS: /sources/knowledge
BRAIN_STAGING_DIRS: /sources/staging
BRAIN_AGENT_RUNS_FILES: /sources/agent-data/runs.jsonl
OLLAMA_URL: ${OLLAMA_URL:-http://host.docker.internal:11434}
OLLAMA_URLS: ${OLLAMA_URLS:-http://host.docker.internal:11434}
OLLAMA_NODE_NAMES: ${OLLAMA_NODE_NAMES:-local-gpu}
OLLAMA_NODE_WEIGHTS: ${OLLAMA_NODE_WEIGHTS:-1}
OLLAMA_ROUTING_MODE: ${OLLAMA_ROUTING_MODE:-least_inflight}
OLLAMA_NODE_MAX_INFLIGHT: ${OLLAMA_NODE_MAX_INFLIGHT:-1}
OLLAMA_NODE_HEALTH_INTERVAL: ${OLLAMA_NODE_HEALTH_INTERVAL:-15s}
OLLAMA_NODE_FAILURE_COOLDOWN: ${OLLAMA_NODE_FAILURE_COOLDOWN:-30s}
OLLAMA_NODE_REQUEST_TIMEOUT: ${OLLAMA_NODE_REQUEST_TIMEOUT:-8m}
OLLAMA_FAILOVER_ENABLED: ${OLLAMA_FAILOVER_ENABLED:-true}
OLLAMA_FAILOVER_ATTEMPTS: ${OLLAMA_FAILOVER_ATTEMPTS:-0}
OLLAMA_REQUIRE_SAME_MODEL_DIGEST: ${OLLAMA_REQUIRE_SAME_MODEL_DIGEST:-true}
OLLAMA_REQUIRE_EMBEDDING_MODEL: ${OLLAMA_REQUIRE_EMBEDDING_MODEL:-true}
OLLAMA_CHAT_MODEL: ${OLLAMA_CHAT_MODEL:-qwen3:8b}
OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-embeddinggemma}
BRAIN_AUTO_ENRICH: ${BRAIN_AUTO_ENRICH:-true}
BRAIN_SCAN_INTERVAL: ${BRAIN_SCAN_INTERVAL:-20s}
BRAIN_PERSIST_INTERVAL: ${BRAIN_PERSIST_INTERVAL:-5m}
BRAIN_LEARNING_ENABLED: ${BRAIN_LEARNING_ENABLED:-true}
BRAIN_THINKING_ENABLED: ${BRAIN_THINKING_ENABLED:-true}
BRAIN_LEARNING_SOURCES: ${BRAIN_LEARNING_SOURCES:-}
BRAIN_DISPLAY_SOURCES: ${BRAIN_DISPLAY_SOURCES:-}
BRAIN_THINKING_SOURCES: ${BRAIN_THINKING_SOURCES:-}
BRAIN_DEFAULT_VIEW: ${BRAIN_DEFAULT_VIEW:-neural}
BRAIN_MAX_DISPLAY_NODES: ${BRAIN_MAX_DISPLAY_NODES:-0}
BRAIN_LOW_POWER_MODE: ${BRAIN_LOW_POWER_MODE:-false}
BRAIN_ENRICH_INTERVAL: ${BRAIN_ENRICH_INTERVAL:-90s}
BRAIN_ENRICH_BATCH_SIZE: ${BRAIN_ENRICH_BATCH_SIZE:-3}
BRAIN_ENRICH_STEP_DELAY: ${BRAIN_ENRICH_STEP_DELAY:-3s}
BRAIN_ENRICH_ANCHORS: ${BRAIN_ENRICH_ANCHORS:-48}
BRAIN_SIMILARITY_THRESHOLD: ${BRAIN_SIMILARITY_THRESHOLD:-0.68}
BRAIN_RELATION_THRESHOLD: ${BRAIN_RELATION_THRESHOLD:-0.72}
BRAIN_ARTICLE_SYNTHESIS_ENABLED: ${BRAIN_ARTICLE_SYNTHESIS_ENABLED:-true}
BRAIN_ARTICLE_MIN_SOURCES: ${BRAIN_ARTICLE_MIN_SOURCES:-3}
BRAIN_ARTICLE_MAX_SOURCES: ${BRAIN_ARTICLE_MAX_SOURCES:-8}
BRAIN_ARTICLE_MIN_PRODUCTION_RATIO: ${BRAIN_ARTICLE_MIN_PRODUCTION_RATIO:-0.70}
BRAIN_ARTICLE_MAX_GENERATION_DEPTH: ${BRAIN_ARTICLE_MAX_GENERATION_DEPTH:-2}
BRAIN_ARTICLE_MIN_CONFIDENCE: ${BRAIN_ARTICLE_MIN_CONFIDENCE:-0.74}
BRAIN_ARTICLE_MIN_TEXT_CHARS: ${BRAIN_ARTICLE_MIN_TEXT_CHARS:-180}
BRAIN_ARTICLE_MIN_ANSWER_CHARS: ${BRAIN_ARTICLE_MIN_ANSWER_CHARS:-420}
BRAIN_ARTICLE_MAX_RESEARCH_QUERIES: ${BRAIN_ARTICLE_MAX_RESEARCH_QUERIES:-6}
BRAIN_ARTICLE_RESEARCH_RESULTS: ${BRAIN_ARTICLE_RESEARCH_RESULTS:-8}
BRAIN_ARTICLE_RESEARCH_ROUNDS: ${BRAIN_ARTICLE_RESEARCH_ROUNDS:-3}
BRAIN_ARTICLE_RESEARCH_FETCH_RESULTS: ${BRAIN_ARTICLE_RESEARCH_FETCH_RESULTS:-4}
BRAIN_ARTICLE_RESEARCH_MIN_RELEVANCE: ${BRAIN_ARTICLE_RESEARCH_MIN_RELEVANCE:-0.65}
BRAIN_ARTICLE_RESEARCH_MIN_QUALITY: ${BRAIN_ARTICLE_RESEARCH_MIN_QUALITY:-0.45}
BRAIN_ARTICLE_RESEARCH_PAGE_MAX_BYTES: ${BRAIN_ARTICLE_RESEARCH_PAGE_MAX_BYTES:-2097152}
BRAIN_ARTICLE_RESEARCH_PAGE_MAX_CHARS: ${BRAIN_ARTICLE_RESEARCH_PAGE_MAX_CHARS:-14000}
BRAIN_ARTICLE_RESEARCH_FETCH_TIMEOUT: ${BRAIN_ARTICLE_RESEARCH_FETCH_TIMEOUT:-20s}
BRAIN_ARTICLE_RESEARCH_ALLOW_PRIVATE: ${BRAIN_ARTICLE_RESEARCH_ALLOW_PRIVATE:-false}
BRAIN_TOP_K: ${BRAIN_TOP_K:-8}
BRAIN_MAX_CONTEXT_CHARS: ${BRAIN_MAX_CONTEXT_CHARS:-16000}
BRAIN_RESEARCH_ENABLED: ${BRAIN_RESEARCH_ENABLED:-false}
# In Docker, localhost points to this Brain container. Use the SearXNG
# service name (for example http://searxng:8080) or host.docker.internal.
SEARXNG_URL: ${SEARXNG_URL:-}
BRAIN_API_KEY: ${BRAIN_API_KEY:-}
GLPI_KB_ENABLED: ${GLPI_KB_ENABLED:-false}
GLPI_URL: ${GLPI_URL:-}
GLPI_API_VERSION: ${GLPI_API_VERSION:-v2.3}
GLPI_CLIENT_ID: ${GLPI_CLIENT_ID:-}
GLPI_CLIENT_SECRET: ${GLPI_CLIENT_SECRET:-}
GLPI_USERNAME: ${GLPI_USERNAME:-}
GLPI_PASSWORD: ${GLPI_PASSWORD:-}
GLPI_ALLOW_INSECURE_HTTP: ${GLPI_ALLOW_INSECURE_HTTP:-false}
GLPI_TIMEOUT: ${GLPI_TIMEOUT:-20s}
GLPI_KB_PATH: ${GLPI_KB_PATH:-auto}
GLPI_KB_FILTER: ${GLPI_KB_FILTER:-}
GLPI_KB_LIMIT: ${GLPI_KB_LIMIT:-500}
GLPI_KB_SYNC_INTERVAL: ${GLPI_KB_SYNC_INTERVAL:-10m}
GLPI_KB_SOURCE: ${GLPI_KB_SOURCE:-GLPI Knowledge Base}
volumes:
- brain-data:/app/data
# Adjust the three host paths to your actual project directories.
- ../glpi-ai-agent/knowledge:/sources/knowledge:ro
- ../glpi-ai-knowledgebase/staging:/sources/staging:rw
- ../glpi-ai-agent/data:/sources/agent-data:ro
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
brain-data: