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_CATEGORIES: ${BRAIN_LEARNING_CATEGORIES:-} BRAIN_DISPLAY_CATEGORIES: ${BRAIN_DISPLAY_CATEGORIES:-} BRAIN_THINKING_CATEGORIES: ${BRAIN_THINKING_CATEGORIES:-} BRAIN_DEFAULT_VIEW: ${BRAIN_DEFAULT_VIEW:-neural} 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_RESEARCH_ENABLED: ${BRAIN_RESEARCH_ENABLED:-false} 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: