services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-artex} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_DB: ${POSTGRES_DB:-artex} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-artex} -d ${POSTGRES_DB:-artex}"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped scopeweaver: build: context: . image: scopeweaver:local depends_on: postgres: condition: service_healthy environment: SCOPEWEAVER_LANGUAGE: ${SCOPEWEAVER_LANGUAGE:-en} ARTEX_PG_DSN: postgres://${POSTGRES_USER:-artex}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-artex}?sslmode=disable ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} OLLAMA_API_KEY: ${OLLAMA_API_KEY:-} ARTEX_LLM_PROVIDER: ${ARTEX_LLM_PROVIDER:-} ARTEX_LLM_MODEL: ${ARTEX_LLM_MODEL:-} ARTEX_LLM_BASE_URL: ${ARTEX_LLM_BASE_URL:-} ARTEX_LLM_PROXY: ${ARTEX_LLM_PROXY:-} SCOPEWEAVER_LLM_PROVIDER: ${SCOPEWEAVER_LLM_PROVIDER:-${ARTEX_LLM_PROVIDER:-}} SCOPEWEAVER_LLM_MODEL: ${SCOPEWEAVER_LLM_MODEL:-${ARTEX_LLM_MODEL:-}} SCOPEWEAVER_LLM_BASE_URL: ${SCOPEWEAVER_LLM_BASE_URL:-${ARTEX_LLM_BASE_URL:-}} SCOPEWEAVER_LLM_PROXY: ${SCOPEWEAVER_LLM_PROXY:-${ARTEX_LLM_PROXY:-}} # Unset generic keys stay absent so provider-specific BYOK credentials work. SCOPEWEAVER_LLM_API_KEY: ARTEX_LLM_API_KEY: SCOPEWEAVER_LLM_CONTEXT_WINDOW_K: ${SCOPEWEAVER_LLM_CONTEXT_WINDOW_K:-${ARTEX_LLM_CONTEXT_WINDOW_K:-}} SCOPEWEAVER_LLM_KEEP_ALIVE: ${SCOPEWEAVER_LLM_KEEP_ALIVE:-${ARTEX_LLM_KEEP_ALIVE:-}} SCOPEWEAVER_LLM_MAX_CONCURRENT: ${SCOPEWEAVER_LLM_MAX_CONCURRENT:-${ARTEX_LLM_MAX_CONCURRENT:-}} SCOPEWEAVER_LOCAL_LLM_ONLY: ${SCOPEWEAVER_LOCAL_LLM_ONLY:-${ARTEX_LOCAL_LLM_ONLY:-false}} SCOPEWEAVER_LOCAL_LLM_ALLOWED_CIDRS: ${SCOPEWEAVER_LOCAL_LLM_ALLOWED_CIDRS:-${ARTEX_LOCAL_LLM_ALLOWED_CIDRS:-}} extra_hosts: - "host.docker.internal:host-gateway" ports: - "8787:8787" - "127.0.0.1:8788:8788" volumes: - ./data:/app/data - ./skills:/app/skills restart: unless-stopped ollama: image: ollama/ollama:latest profiles: ["local-llm"] environment: OLLAMA_KEEP_ALIVE: 30m OLLAMA_NUM_PARALLEL: "1" OLLAMA_CONTEXT_LENGTH: "32768" OLLAMA_NO_CLOUD: "1" volumes: - ollama_data:/root/.ollama restart: unless-stopped volumes: pgdata: ollama_data: