All checks were successful
release-tag / release-image (push) Successful in 11m6s
444 lines
21 KiB
YAML
444 lines
21 KiB
YAML
# Production compose: registry-only. No local source build is permitted here.
|
|
# Use docker-compose.dev.yml as an override for local source builds.
|
|
name: glpi-neuroforge-mega
|
|
services:
|
|
ollama:
|
|
image: ollama/ollama:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ollama-data:/root/.ollama
|
|
ports:
|
|
- 127.0.0.1:${OLLAMA_HOST_PORT:-11434}:11434
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
searxng:
|
|
image: ${SEARXNG_IMAGE:-docker.io/searxng/searxng:latest}
|
|
profiles:
|
|
- research
|
|
restart: unless-stopped
|
|
environment:
|
|
SEARXNG_SECRET: ${SEARXNG_SECRET}
|
|
SEARXNG_BASE_URL: http://searxng:8080/
|
|
FORCE_OWNERSHIP: 'false'
|
|
volumes:
|
|
- ./deploy/searxng/settings.yml:/etc/searxng/settings.yml:ro
|
|
- searxng-cache:/var/cache/searxng
|
|
ports:
|
|
- 127.0.0.1:${SEARXNG_HOST_PORT:-8888}:8080
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=64m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
neuroforge:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-neuroforge:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
command:
|
|
- -data
|
|
- /app/data
|
|
- -listen
|
|
- :8080
|
|
restart: unless-stopped
|
|
environment:
|
|
NEUROFORGE_ADMIN_TOKEN: ${NEUROFORGE_ADMIN_TOKEN:?Set a unique NeuroForge admin token}
|
|
NEUROFORGE_APP_API_KEY: ${NEUROFORGE_APP_API_KEY:?Set a unique NeuroForge app API key}
|
|
NEUROFORGE_INTEGRATION_TOKEN: ${NEUROFORGE_INTEGRATION_TOKEN:?Set a unique NeuroForge integration token}
|
|
NEUROFORGE_CONTROL_READ_TOKEN: ${NEUROFORGE_CONTROL_READ_TOKEN:?Set a unique NeuroForge control read token}
|
|
NEUROFORGE_WORKER_TOKEN: ${NEUROFORGE_WORKER_TOKEN:?Set a unique NeuroForge worker token}
|
|
NEUROFORGE_METRICS_TOKEN: ${NEUROFORGE_METRICS_TOKEN:?Set a unique NeuroForge metrics token}
|
|
NEUROFORGE_CLUSTER_TOKEN: ${NEUROFORGE_CLUSTER_TOKEN:-}
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
|
NEUROFORGE_OLLAMA_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}
|
|
NEUROFORGE_OLLAMA_CHAT_MODEL: ${OLLAMA_MODEL:-gemma3}
|
|
NEUROFORGE_OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-embeddinggemma}
|
|
NEUROFORGE_READINESS_OLLAMA_LIVE: ${NEUROFORGE_READINESS_OLLAMA_LIVE:-true}
|
|
NEUROFORGE_CONTROLLED_LEARNING: ${NEUROFORGE_CONTROLLED_LEARNING:-true}
|
|
NEUROFORGE_GOAL_LEARNING_ENABLED: ${NEUROFORGE_GOAL_LEARNING_ENABLED:-false}
|
|
NEUROFORGE_RESEARCH_ENABLED: ${NEUROFORGE_RESEARCH_ENABLED:-false}
|
|
NEUROFORGE_SEARXNG_ENABLED: ${NEUROFORGE_SEARXNG_ENABLED:-false}
|
|
NEUROFORGE_SEARXNG_URL: ${NEUROFORGE_SEARXNG_URL:-http://searxng:8080}
|
|
NEUROFORGE_RESEARCH_GOAL_ENABLED: ${NEUROFORGE_RESEARCH_GOAL_ENABLED:-true}
|
|
NEUROFORGE_AUTONOMY_ENABLED: ${NEUROFORGE_AUTONOMY_ENABLED:-false}
|
|
NEUROFORGE_AUTONOMY_INTERVAL_MINUTES: ${NEUROFORGE_AUTONOMY_INTERVAL_MINUTES:-30}
|
|
NEUROFORGE_RESEARCH_MAX_QUERIES: ${NEUROFORGE_RESEARCH_MAX_QUERIES:-2}
|
|
NEUROFORGE_RESEARCH_MAX_PAGES: ${NEUROFORGE_RESEARCH_MAX_PAGES:-4}
|
|
NEUROFORGE_KB_STAGING_ENABLED: ${NEUROFORGE_KB_STAGING_ENABLED:-true}
|
|
NEUROFORGE_KB_STAGING_URL: http://knowledge:8080/api/integrations/staging
|
|
NEUROFORGE_KB_STAGING_TOKEN: ${KB_INTEGRATION_TOKEN:?Set the Knowledge integration token}
|
|
NEUROFORGE_KB_STAGING_MIN_EVIDENCE: ${NEUROFORGE_KB_STAGING_MIN_EVIDENCE:-4}
|
|
NEUROFORGE_KB_STAGING_MIN_SOURCES: ${NEUROFORGE_KB_STAGING_MIN_SOURCES:-2}
|
|
NEUROFORGE_KB_STAGING_MIN_CORROBORATIONS: ${NEUROFORGE_KB_STAGING_MIN_CORROBORATIONS:-0}
|
|
NEUROFORGE_KB_STAGING_MAX_EVIDENCE: ${NEUROFORGE_KB_STAGING_MAX_EVIDENCE:-12}
|
|
NEUROFORGE_KB_STAGING_SYNTHESIS_MODE: ${NEUROFORGE_KB_STAGING_SYNTHESIS_MODE:-llm}
|
|
ports:
|
|
- 127.0.0.1:${NEUROFORGE_HOST_PORT:-8090}:8080
|
|
volumes:
|
|
- neuroforge-data:/app/data
|
|
depends_on:
|
|
ollama:
|
|
condition: service_started
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=64m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- wget
|
|
- -q
|
|
- -O
|
|
- '-'
|
|
- http://127.0.0.1:8080/readyz
|
|
interval: 15s
|
|
timeout: 3s
|
|
retries: 8
|
|
start_period: 15s
|
|
stop_grace_period: 35s
|
|
neuroforge-worker:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-neuroforge-worker:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
command:
|
|
- -server
|
|
- http://neuroforge:8080
|
|
- -id
|
|
- mega-worker-1
|
|
restart: unless-stopped
|
|
environment:
|
|
NEUROFORGE_WORKER_TOKEN: ${NEUROFORGE_WORKER_TOKEN:?Set a unique NeuroForge worker token}
|
|
depends_on:
|
|
neuroforge:
|
|
condition: service_healthy
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=32m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
agent-data-init:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-agent-data-init:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
restart: 'no'
|
|
user: 0:0
|
|
volumes:
|
|
- agent-data:/app/data
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
cap_add:
|
|
- CHOWN
|
|
- FOWNER
|
|
agent:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-agent:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
restart: unless-stopped
|
|
environment:
|
|
AI_CONTENT_LABEL_ENABLED: ${AI_CONTENT_LABEL_ENABLED:-}
|
|
AUTO_CATEGORY: ${AUTO_CATEGORY:-}
|
|
AUTO_ESCALATION: ${AUTO_ESCALATION:-}
|
|
AUTO_PRIORITY: ${AUTO_PRIORITY:-}
|
|
AUTO_REPLY: ${AUTO_REPLY:-}
|
|
BRAIN_ACTIVITY_API_KEY: ${NEUROFORGE_INTEGRATION_TOKEN:?Set the NeuroForge integration token}
|
|
BRAIN_ACTIVITY_URL: http://neuroforge:8080/api/v1/integrations/events
|
|
CATEGORY_CONFIDENCE: ${CATEGORY_CONFIDENCE:-}
|
|
CATEGORY_PROMPT_LIMIT: ${CATEGORY_PROMPT_LIMIT:-}
|
|
CHANGE_CALENDAR_ENABLED: ${CHANGE_CALENDAR_ENABLED:-}
|
|
CHANGE_LOOKAHEAD: ${CHANGE_LOOKAHEAD:-}
|
|
CHANGE_LOOKBACK: ${CHANGE_LOOKBACK:-}
|
|
COMMUNICATION_CLOSING: ${COMMUNICATION_CLOSING:-}
|
|
COMMUNICATION_LANGUAGE: ${COMMUNICATION_LANGUAGE:-}
|
|
COMMUNICATION_SALUTATION: ${COMMUNICATION_SALUTATION:-}
|
|
COMMUNICATION_SIGNATURE: ${COMMUNICATION_SIGNATURE:-}
|
|
COMMUNICATION_STYLE: ${COMMUNICATION_STYLE:-}
|
|
CONTEXT_BLOCK_AUTO_REPLY_ON_ERRORS: ${CONTEXT_BLOCK_AUTO_REPLY_ON_ERRORS:-}
|
|
CONTEXT_BLOCK_AUTO_REPLY_ON_INCIDENT: ${CONTEXT_BLOCK_AUTO_REPLY_ON_INCIDENT:-}
|
|
CONTEXT_ENABLED: ${CONTEXT_ENABLED:-}
|
|
CONTEXT_INCIDENT_REPLY_TEXT: ${CONTEXT_INCIDENT_REPLY_TEXT:-}
|
|
CONTEXT_MAINTENANCE_REPLY_TEXT: ${CONTEXT_MAINTENANCE_REPLY_TEXT:-}
|
|
CONTEXT_RELEVANCE_MIN_SCORE: ${CONTEXT_RELEVANCE_MIN_SCORE:-}
|
|
CONTEXT_STATUS_REPLY_ENABLED: ${CONTEXT_STATUS_REPLY_ENABLED:-}
|
|
CONTEXT_STATUS_REPLY_MIN_AI_CONFIDENCE: ${CONTEXT_STATUS_REPLY_MIN_AI_CONFIDENCE:-}
|
|
CONTEXT_STATUS_REPLY_MIN_FINAL_SCORE: ${CONTEXT_STATUS_REPLY_MIN_FINAL_SCORE:-}
|
|
CONTEXT_STATUS_REPLY_MIN_RELEVANCE: ${CONTEXT_STATUS_REPLY_MIN_RELEVANCE:-}
|
|
CONTEXT_TIMEOUT: ${CONTEXT_TIMEOUT:-}
|
|
CONTROL_READ_TOKEN: ${CONTROL_READ_TOKEN:?Set the Agent control read token}
|
|
DATA_DIR: /app/data
|
|
DRY_RUN: ${DRY_RUN:-}
|
|
ESCALATION_ADD_PRIVATE_FOLLOWUP: ${ESCALATION_ADD_PRIVATE_FOLLOWUP:-}
|
|
ESCALATION_ALLOWED_ACTIONS: ${ESCALATION_ALLOWED_ACTIONS:-}
|
|
ESCALATION_ALLOWED_REASON_CODES: ${ESCALATION_ALLOWED_REASON_CODES:-}
|
|
ESCALATION_ANALYSIS_TIMEOUT: ${ESCALATION_ANALYSIS_TIMEOUT:-}
|
|
ESCALATION_CONFIDENCE: ${ESCALATION_CONFIDENCE:-}
|
|
ESCALATION_ENABLED: ${ESCALATION_ENABLED:-}
|
|
ESCALATION_MAJOR_INCIDENT_MIN_RELEVANCE: ${ESCALATION_MAJOR_INCIDENT_MIN_RELEVANCE:-}
|
|
ESCALATION_MAJOR_INCIDENT_NOTE: ${ESCALATION_MAJOR_INCIDENT_NOTE:-}
|
|
ESCALATION_MANAGER_REVIEW_GROUP_ID: ${ESCALATION_MANAGER_REVIEW_GROUP_ID:-}
|
|
ESCALATION_MANAGER_REVIEW_MIN_LEVEL: ${ESCALATION_MANAGER_REVIEW_MIN_LEVEL:-}
|
|
ESCALATION_MANAGER_REVIEW_NOTE: ${ESCALATION_MANAGER_REVIEW_NOTE:-}
|
|
ESCALATION_MANAGER_REVIEW_USER_ID: ${ESCALATION_MANAGER_REVIEW_USER_ID:-}
|
|
ESCALATION_MAX_LEVEL: ${ESCALATION_MAX_LEVEL:-}
|
|
ESCALATION_MIN_AGE: ${ESCALATION_MIN_AGE:-}
|
|
ESCALATION_MIN_INACTIVITY: ${ESCALATION_MIN_INACTIVITY:-}
|
|
ESCALATION_SCAN_INTERVAL: ${ESCALATION_SCAN_INTERVAL:-}
|
|
ESCALATION_SECOND_LEVEL_GROUP_ID: ${ESCALATION_SECOND_LEVEL_GROUP_ID:-}
|
|
ESCALATION_SECOND_LEVEL_NOTE: ${ESCALATION_SECOND_LEVEL_NOTE:-}
|
|
ESCALATION_SECURITY_GROUP_ID: ${ESCALATION_SECURITY_GROUP_ID:-}
|
|
ESCALATION_SECURITY_NOTE: ${ESCALATION_SECURITY_NOTE:-}
|
|
ESCALATION_SERVICE_OWNER_GROUP_ID: ${ESCALATION_SERVICE_OWNER_GROUP_ID:-}
|
|
ESCALATION_SERVICE_OWNER_MIN_LEVEL: ${ESCALATION_SERVICE_OWNER_MIN_LEVEL:-}
|
|
ESCALATION_SERVICE_OWNER_NOTE: ${ESCALATION_SERVICE_OWNER_NOTE:-}
|
|
ESCALATION_SERVICE_OWNER_USER_ID: ${ESCALATION_SERVICE_OWNER_USER_ID:-}
|
|
ESCALATION_SLA_RISK_WINDOW: ${ESCALATION_SLA_RISK_WINDOW:-}
|
|
ESCALATION_WEBHOOK_ALLOW_INSECURE_HTTP: ${ESCALATION_WEBHOOK_ALLOW_INSECURE_HTTP:-}
|
|
ESCALATION_WEBHOOK_BEARER_TOKEN: ${ESCALATION_WEBHOOK_BEARER_TOKEN:-}
|
|
ESCALATION_WEBHOOK_TIMEOUT: ${ESCALATION_WEBHOOK_TIMEOUT:-}
|
|
ESCALATION_WEBHOOK_URL: ${ESCALATION_WEBHOOK_URL:-}
|
|
GLPI_AGENT_USER_ID: ${GLPI_AGENT_USER_ID:-}
|
|
GLPI_ALLOWED_STATUS_IDS: ${GLPI_ALLOWED_STATUS_IDS:-}
|
|
GLPI_ALLOW_INSECURE_HTTP: ${GLPI_ALLOW_INSECURE_HTTP:-}
|
|
GLPI_API_VERSION: ${GLPI_API_VERSION:-}
|
|
GLPI_CHANGE_FILTER: ${GLPI_CHANGE_FILTER:-}
|
|
GLPI_CHANGE_LIMIT: ${GLPI_CHANGE_LIMIT:-}
|
|
GLPI_CHANGE_PATH: ${GLPI_CHANGE_PATH:-}
|
|
GLPI_CLIENT_ID: ${GLPI_CLIENT_ID:-}
|
|
GLPI_CLIENT_SECRET: ${GLPI_CLIENT_SECRET:-}
|
|
GLPI_ESCALATION_FILTER: ${GLPI_ESCALATION_FILTER:-}
|
|
GLPI_ESCALATION_GROUP_PATCH_FIELD: ${GLPI_ESCALATION_GROUP_PATCH_FIELD:-}
|
|
GLPI_ESCALATION_ITIL_LINK_BODY: ${GLPI_ESCALATION_ITIL_LINK_BODY:-}
|
|
GLPI_ESCALATION_ITIL_LINK_PATH: ${GLPI_ESCALATION_ITIL_LINK_PATH:-}
|
|
GLPI_ESCALATION_LIMIT: ${GLPI_ESCALATION_LIMIT:-}
|
|
GLPI_ESCALATION_USER_PATCH_FIELD: ${GLPI_ESCALATION_USER_PATCH_FIELD:-}
|
|
GLPI_KB_AUTO_REPLY: ${GLPI_KB_AUTO_REPLY:-}
|
|
GLPI_KB_AUTO_REPLY_ALLOW_UNCATEGORIZED: ${GLPI_KB_AUTO_REPLY_ALLOW_UNCATEGORIZED:-}
|
|
GLPI_KB_AUTO_REPLY_CATEGORY_IDS: ${GLPI_KB_AUTO_REPLY_CATEGORY_IDS:-}
|
|
GLPI_KB_AUTO_REPLY_ITIL_CATEGORY_IDS: ${GLPI_KB_AUTO_REPLY_ITIL_CATEGORY_IDS:-}
|
|
GLPI_KB_AUTO_REPLY_UNCATEGORIZED_ARTICLE_IDS: ${GLPI_KB_AUTO_REPLY_UNCATEGORIZED_ARTICLE_IDS:-}
|
|
GLPI_KB_ENABLED: ${GLPI_KB_ENABLED:-}
|
|
GLPI_KB_FILTER: ${GLPI_KB_FILTER:-}
|
|
GLPI_KB_LIMIT: ${GLPI_KB_LIMIT:-}
|
|
GLPI_KB_PATH: ${GLPI_KB_PATH:-}
|
|
GLPI_KB_SOURCE: ${GLPI_KB_SOURCE:-}
|
|
GLPI_KB_SYNC_INTERVAL: ${GLPI_KB_SYNC_INTERVAL:-}
|
|
GLPI_MAJOR_INCIDENT_FILTER: ${GLPI_MAJOR_INCIDENT_FILTER:-}
|
|
GLPI_MAJOR_INCIDENT_LIMIT: ${GLPI_MAJOR_INCIDENT_LIMIT:-}
|
|
GLPI_PASSWORD: ${GLPI_PASSWORD:-}
|
|
GLPI_POLL_INTERVAL: ${GLPI_POLL_INTERVAL:-}
|
|
GLPI_POLL_LIMIT: ${GLPI_POLL_LIMIT:-}
|
|
GLPI_TICKET_FILTER: ${GLPI_TICKET_FILTER:-}
|
|
GLPI_TIMEOUT: ${GLPI_TIMEOUT:-}
|
|
GLPI_URL: ${GLPI_URL:-}
|
|
GLPI_USERNAME: ${GLPI_USERNAME:-}
|
|
GLPI_USER_DEVICE_FILTER_TEMPLATE: ${GLPI_USER_DEVICE_FILTER_TEMPLATE:-}
|
|
GLPI_USER_DEVICE_LIMIT: ${GLPI_USER_DEVICE_LIMIT:-}
|
|
GLPI_USER_DEVICE_PATHS: ${GLPI_USER_DEVICE_PATHS:-}
|
|
HTTP_ADDR: :8080
|
|
KNOWLEDGE_ALLOWED_SOURCES: ${KNOWLEDGE_ALLOWED_SOURCES:-}
|
|
KNOWLEDGE_AUDIT_TOP_K: ${KNOWLEDGE_AUDIT_TOP_K:-}
|
|
KNOWLEDGE_AUTO_REPLY_SOURCES: ${KNOWLEDGE_AUTO_REPLY_SOURCES:-}
|
|
KNOWLEDGE_CANDIDATE_MAX_GAP: ${KNOWLEDGE_CANDIDATE_MAX_GAP:-}
|
|
KNOWLEDGE_CATEGORY_MAP_FILE: ${KNOWLEDGE_CATEGORY_MAP_FILE:-}
|
|
KNOWLEDGE_CATEGORY_MODE: ${KNOWLEDGE_CATEGORY_MODE:-}
|
|
KNOWLEDGE_CATEGORY_SOURCES: ${KNOWLEDGE_CATEGORY_SOURCES:-}
|
|
KNOWLEDGE_CHUNK_OVERLAP_WORDS: ${KNOWLEDGE_CHUNK_OVERLAP_WORDS:-}
|
|
KNOWLEDGE_CHUNK_WORDS: ${KNOWLEDGE_CHUNK_WORDS:-}
|
|
KNOWLEDGE_DIR: /app/knowledge
|
|
KNOWLEDGE_EMBEDDING_PROFILE: ${KNOWLEDGE_EMBEDDING_PROFILE:-}
|
|
KNOWLEDGE_EMBED_BATCH_SIZE: ${KNOWLEDGE_EMBED_BATCH_SIZE:-}
|
|
KNOWLEDGE_EVIDENCE_WEIGHT_AI: ${KNOWLEDGE_EVIDENCE_WEIGHT_AI:-}
|
|
KNOWLEDGE_EVIDENCE_WEIGHT_CATEGORY: ${KNOWLEDGE_EVIDENCE_WEIGHT_CATEGORY:-}
|
|
KNOWLEDGE_EVIDENCE_WEIGHT_RETRIEVAL: ${KNOWLEDGE_EVIDENCE_WEIGHT_RETRIEVAL:-}
|
|
KNOWLEDGE_IGNORE_GLOBS: ${KNOWLEDGE_IGNORE_GLOBS:-}
|
|
KNOWLEDGE_INDEX_MODE: ${KNOWLEDGE_INDEX_MODE:-}
|
|
KNOWLEDGE_INDEX_SCAN_INTERVAL: ${KNOWLEDGE_INDEX_SCAN_INTERVAL:-}
|
|
KNOWLEDGE_MAX_CHUNKS_PER_DOC: ${KNOWLEDGE_MAX_CHUNKS_PER_DOC:-}
|
|
KNOWLEDGE_MAX_QUERY_CHUNKS: ${KNOWLEDGE_MAX_QUERY_CHUNKS:-}
|
|
KNOWLEDGE_MIN_SCORE: ${KNOWLEDGE_MIN_SCORE:-}
|
|
KNOWLEDGE_RETRIEVAL_FLOOR: ${KNOWLEDGE_RETRIEVAL_FLOOR:-}
|
|
KNOWLEDGE_TOP_K: ${KNOWLEDGE_TOP_K:-}
|
|
KNOWLEDGE_VECTOR_BACKEND: ${KNOWLEDGE_VECTOR_BACKEND:-dual}
|
|
KNOWLEDGE_WEB_EDIT_ENABLED: ${AGENT_LEGACY_KNOWLEDGE_EDITOR_ENABLED:-false}
|
|
KNOWLEDGE_WEIGHT_CATEGORY: ${KNOWLEDGE_WEIGHT_CATEGORY:-}
|
|
KNOWLEDGE_WEIGHT_KEYWORDS: ${KNOWLEDGE_WEIGHT_KEYWORDS:-}
|
|
KNOWLEDGE_WEIGHT_LEXICAL: ${KNOWLEDGE_WEIGHT_LEXICAL:-}
|
|
KNOWLEDGE_WEIGHT_SEMANTIC: ${KNOWLEDGE_WEIGHT_SEMANTIC:-}
|
|
KNOWLEDGE_WEIGHT_TITLE: ${KNOWLEDGE_WEIGHT_TITLE:-}
|
|
LEARNING_ENABLED: ${LEARNING_ENABLED:-}
|
|
LEARNING_EXAMPLES_PER_CATEGORY: ${LEARNING_EXAMPLES_PER_CATEGORY:-}
|
|
LEARNING_MAX_EXAMPLES: ${LEARNING_MAX_EXAMPLES:-}
|
|
LOG_LEVEL: ${LOG_LEVEL:-}
|
|
MAJOR_INCIDENTS_ENABLED: ${MAJOR_INCIDENTS_ENABLED:-}
|
|
NEUROFORGE_API_KEY: ${NEUROFORGE_INTEGRATION_TOKEN:?Set the NeuroForge integration token}
|
|
NEUROFORGE_FAIL_OPEN: ${NEUROFORGE_FAIL_OPEN:-true}
|
|
NEUROFORGE_NAMESPACE: ${NEUROFORGE_NAMESPACE:-glpi-agent}
|
|
NEUROFORGE_SEARCH_K: ${NEUROFORGE_SEARCH_K:-128}
|
|
NEUROFORGE_TIMEOUT: ${NEUROFORGE_TIMEOUT:-}
|
|
NEUROFORGE_URL: http://neuroforge:8080
|
|
OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-}
|
|
OLLAMA_FAILOVER_ATTEMPTS: ${OLLAMA_FAILOVER_ATTEMPTS:-}
|
|
OLLAMA_FAILOVER_ENABLED: ${OLLAMA_FAILOVER_ENABLED:-}
|
|
OLLAMA_JSON_RETRIES: ${OLLAMA_JSON_RETRIES:-}
|
|
OLLAMA_KEEP_ALIVE: ${OLLAMA_KEEP_ALIVE:-}
|
|
OLLAMA_MAX_CONCURRENT: ${OLLAMA_MAX_CONCURRENT:-}
|
|
OLLAMA_MODEL: ${OLLAMA_MODEL:-}
|
|
OLLAMA_NODE_FAILURE_COOLDOWN: ${OLLAMA_NODE_FAILURE_COOLDOWN:-}
|
|
OLLAMA_NODE_HEALTH_INTERVAL: ${OLLAMA_NODE_HEALTH_INTERVAL:-}
|
|
OLLAMA_NODE_MAX_INFLIGHT: ${OLLAMA_NODE_MAX_INFLIGHT:-}
|
|
OLLAMA_NODE_NAMES: ${OLLAMA_NODE_NAMES:-}
|
|
OLLAMA_NODE_REQUEST_TIMEOUT: ${OLLAMA_NODE_REQUEST_TIMEOUT:-}
|
|
OLLAMA_NODE_WEIGHTS: ${OLLAMA_NODE_WEIGHTS:-}
|
|
OLLAMA_NUM_PREDICT: ${OLLAMA_NUM_PREDICT:-}
|
|
OLLAMA_REQUIRE_EMBEDDING_MODEL: ${OLLAMA_REQUIRE_EMBEDDING_MODEL:-}
|
|
OLLAMA_REQUIRE_SAME_MODEL_DIGEST: ${OLLAMA_REQUIRE_SAME_MODEL_DIGEST:-}
|
|
OLLAMA_ROUTING_MODE: ${OLLAMA_ROUTING_MODE:-}
|
|
OLLAMA_THINK: ${OLLAMA_THINK:-}
|
|
OLLAMA_TIMEOUT: ${OLLAMA_TIMEOUT:-}
|
|
OLLAMA_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}
|
|
OLLAMA_URLS: ${OLLAMA_URLS:-http://ollama:11434}
|
|
OUTCOME_LEARNING_ENABLED: ${OUTCOME_LEARNING_ENABLED:-true}
|
|
OUTCOME_LEARNING_FAIL_OPEN: ${OUTCOME_LEARNING_FAIL_OPEN:-false}
|
|
OUTCOME_LEARNING_MAX_OUTCOMES: ${OUTCOME_LEARNING_MAX_OUTCOMES:-2000}
|
|
OUTCOME_RETRIEVAL_ENABLED: ${OUTCOME_RETRIEVAL_ENABLED:-true}
|
|
OUTCOME_RETRIEVAL_FAIL_OPEN: ${OUTCOME_RETRIEVAL_FAIL_OPEN:-true}
|
|
OUTCOME_RETRIEVAL_MIN_SIMILARITY: ${OUTCOME_RETRIEVAL_MIN_SIMILARITY:-0.58}
|
|
OUTCOME_RETRIEVAL_SEARCH_K: ${OUTCOME_RETRIEVAL_SEARCH_K:-6}
|
|
PRIORITY_ALLOWED_REASON_CODES: ${PRIORITY_ALLOWED_REASON_CODES:-}
|
|
PRIORITY_ANALYSIS_TIMEOUT: ${PRIORITY_ANALYSIS_TIMEOUT:-}
|
|
PRIORITY_CONFIDENCE: ${PRIORITY_CONFIDENCE:-}
|
|
PRIORITY_ENABLED: ${PRIORITY_ENABLED:-}
|
|
PRIORITY_MAX_INCREASE: ${PRIORITY_MAX_INCREASE:-}
|
|
QUEUE_SIZE: ${QUEUE_SIZE:-}
|
|
RAG_ENABLED: ${RAG_ENABLED:-}
|
|
REPLY_CONFIDENCE: ${REPLY_CONFIDENCE:-}
|
|
UPTIME_KUMA_API_KEY: ${UPTIME_KUMA_API_KEY:-}
|
|
UPTIME_KUMA_ENABLED: ${UPTIME_KUMA_ENABLED:-}
|
|
UPTIME_KUMA_INCLUDE_MAINTENANCE: ${UPTIME_KUMA_INCLUDE_MAINTENANCE:-}
|
|
UPTIME_KUMA_MAX_ISSUES: ${UPTIME_KUMA_MAX_ISSUES:-}
|
|
UPTIME_KUMA_MODE: ${UPTIME_KUMA_MODE:-}
|
|
UPTIME_KUMA_STATUS_PAGES: ${UPTIME_KUMA_STATUS_PAGES:-}
|
|
UPTIME_KUMA_TIMEOUT: ${UPTIME_KUMA_TIMEOUT:-}
|
|
UPTIME_KUMA_URL: ${UPTIME_KUMA_URL:-}
|
|
USER_DEVICE_CONTEXT_ENABLED: ${USER_DEVICE_CONTEXT_ENABLED:-}
|
|
WEBHOOK_SECRET: ${WEBHOOK_SECRET:-}
|
|
WEB_ALLOW_ANONYMOUS: ${WEB_ALLOW_ANONYMOUS:-}
|
|
WEB_PASSWORD: ${WEB_PASSWORD:-}
|
|
WEB_USERNAME: ${WEB_USERNAME:-}
|
|
WORKERS: ${WORKERS:-}
|
|
ports:
|
|
- 127.0.0.1:${AGENT_HOST_PORT:-8080}:8080
|
|
volumes:
|
|
- agent-data:/app/data
|
|
- ${KB_DATA_PATH:-./knowledge}:/app/knowledge:ro
|
|
depends_on:
|
|
agent-data-init:
|
|
condition: service_completed_successfully
|
|
ollama:
|
|
condition: service_started
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=64m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- /app/glpi-ai-agent
|
|
- healthcheck
|
|
interval: 15s
|
|
timeout: 3s
|
|
retries: 8
|
|
start_period: 10s
|
|
stop_grace_period: 20s
|
|
knowledge:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-knowledge:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
restart: unless-stopped
|
|
environment:
|
|
APP_MODE: ${KB_APP_MODE:-editor}
|
|
DATA_DIR: /data/knowledge
|
|
BACKUP_DIR: /data/backups
|
|
STAGING_DIR: /data/staging
|
|
LISTEN_ADDR: :8080
|
|
APP_TITLE: ${APP_TITLE:-}
|
|
APP_SUBTITLE: ${APP_SUBTITLE:-}
|
|
AUTO_RELOAD_INTERVAL: ${AUTO_RELOAD_INTERVAL:-}
|
|
BASIC_AUTH_USER: ${BASIC_AUTH_USER:?Set the Knowledge web user}
|
|
BASIC_AUTH_PASSWORD: ${BASIC_AUTH_PASSWORD:?Set the Knowledge web password}
|
|
AI_FALLBACK_ENABLED: ${AI_FALLBACK_ENABLED:-false}
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}
|
|
OLLAMA_MODEL: ${OLLAMA_MODEL:-gemma3}
|
|
OLLAMA_TIMEOUT: ${OLLAMA_TIMEOUT:-10m}
|
|
OLLAMA_MAX_CONCURRENT: ${OLLAMA_MAX_CONCURRENT:-2}
|
|
OLLAMA_STAGING_AUTO_REPLY: ${OLLAMA_STAGING_AUTO_REPLY:-false}
|
|
OLLAMA_STAGING_MIN_SCORE: ${OLLAMA_STAGING_MIN_SCORE:-0.72}
|
|
BRAIN_ACTIVITY_URL: http://neuroforge:8080/api/v1/integrations/events
|
|
BRAIN_ACTIVITY_API_KEY: ${NEUROFORGE_INTEGRATION_TOKEN:?Set the NeuroForge integration token}
|
|
KB_INTEGRATION_TOKEN: ${KB_INTEGRATION_TOKEN:?Set the Knowledge integration token}
|
|
ports:
|
|
- 127.0.0.1:${KNOWLEDGE_HOST_PORT:-8081}:8080
|
|
volumes:
|
|
- ${KB_DATA_PATH:-./knowledge}:/data/knowledge:${KB_DATA_MOUNT_MODE:-rw}
|
|
- ${KB_STAGING_PATH:-./staging}:/data/staging:rw
|
|
- ${KB_BACKUP_PATH:-./backups}:/data/backups:rw
|
|
depends_on:
|
|
ollama:
|
|
condition: service_started
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=32m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
stop_grace_period: 35s
|
|
control:
|
|
image: git.send.nrw/sendnrw/glpi-neuroforge-mega-control:${IMAGE_TAG:?Set IMAGE_TAG to an immutable release tag, for example 1.5.2}
|
|
restart: unless-stopped
|
|
environment:
|
|
CONTROL_ADDR: :8070
|
|
CONTROL_BASIC_AUTH_USER: ${CONTROL_BASIC_AUTH_USER:?Set the Control Center user}
|
|
CONTROL_BASIC_AUTH_PASSWORD: ${CONTROL_BASIC_AUTH_PASSWORD:?Set the Control Center password}
|
|
AGENT_URL: http://agent:8080
|
|
KNOWLEDGE_URL: http://knowledge:8080
|
|
NEUROFORGE_URL: http://neuroforge:8080
|
|
NEUROFORGE_API_KEY: ${NEUROFORGE_CONTROL_READ_TOKEN:?Set the NeuroForge control read token}
|
|
CONTROL_READ_TOKEN: ${CONTROL_READ_TOKEN:?Set the Agent control read token}
|
|
CODEBASE_MEMORY_URL: ${CODEBASE_MEMORY_URL:-}
|
|
PUBLIC_CODEBASE_MEMORY_URL: ${PUBLIC_CODEBASE_MEMORY_URL:-}
|
|
KNOWLEDGE_VECTOR_BACKEND: ${KNOWLEDGE_VECTOR_BACKEND:-dual}
|
|
NEUROFORGE_SEARCH_K: ${NEUROFORGE_SEARCH_K:-128}
|
|
NEUROFORGE_FAIL_OPEN: ${NEUROFORGE_FAIL_OPEN:-true}
|
|
NEUROFORGE_CONTROLLED_LEARNING: ${NEUROFORGE_CONTROLLED_LEARNING:-true}
|
|
NEUROFORGE_GOAL_LEARNING_ENABLED: ${NEUROFORGE_GOAL_LEARNING_ENABLED:-false}
|
|
OUTCOME_LEARNING_ENABLED: ${OUTCOME_LEARNING_ENABLED:-true}
|
|
OUTCOME_RETRIEVAL_ENABLED: ${OUTCOME_RETRIEVAL_ENABLED:-true}
|
|
OUTCOME_RETRIEVAL_SEARCH_K: ${OUTCOME_RETRIEVAL_SEARCH_K:-6}
|
|
OUTCOME_RETRIEVAL_MIN_SIMILARITY: ${OUTCOME_RETRIEVAL_MIN_SIMILARITY:-0.58}
|
|
OUTCOME_RETRIEVAL_FAIL_OPEN: ${OUTCOME_RETRIEVAL_FAIL_OPEN:-true}
|
|
NEUROFORGE_RESEARCH_ENABLED: ${NEUROFORGE_RESEARCH_ENABLED:-false}
|
|
NEUROFORGE_SEARXNG_ENABLED: ${NEUROFORGE_SEARXNG_ENABLED:-false}
|
|
NEUROFORGE_KB_STAGING_ENABLED: ${NEUROFORGE_KB_STAGING_ENABLED:-true}
|
|
NEUROFORGE_AUTONOMY_ENABLED: ${NEUROFORGE_AUTONOMY_ENABLED:-false}
|
|
PUBLIC_AGENT_URL: http://localhost:${AGENT_HOST_PORT:-8080}
|
|
PUBLIC_KNOWLEDGE_URL: http://localhost:${KNOWLEDGE_HOST_PORT:-8081}
|
|
PUBLIC_NEUROFORGE_URL: http://localhost:${NEUROFORGE_HOST_PORT:-8090}/admin
|
|
ports:
|
|
- 127.0.0.1:${CONTROL_HOST_PORT:-8070}:8070
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=16m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
extra_hosts:
|
|
- host.docker.internal:host-gateway
|
|
stop_grace_period: 25s
|
|
volumes:
|
|
neuroforge-data: null
|
|
agent-data: null
|
|
ollama-data: null
|
|
searxng-cache: null
|