services: postgres: image: pgvector/pgvector:pg16 environment: POSTGRES_DB: "${POSTGRES_DB:-duriin}" POSTGRES_USER: "${POSTGRES_USER:-duriin}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env before starting PostgreSQL}" command: - postgres - -c - shared_buffers=128MB - -c - work_mem=4MB - -c - maintenance_work_mem=64MB - -c - effective_cache_size=256MB - -c - max_connections=40 volumes: - postgres_data:/var/lib/postgresql/data mem_limit: 512m cpus: "0.50" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 10s timeout: 5s retries: 12 networks: - nginx_proxy_manager_default postgres-migrate: profiles: [migration] build: context: . provenance: false command: node scripts/migrate-sqlite-to-postgres.js env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data:ro environment: DATABASE_URL: "postgresql://${POSTGRES_USER:-duriin}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-duriin}" SQLITE_ARCHIVE_PATH: /data/archive.sqlite SQLITE_INTELLIGENCE_PATH: /data/intelligence.sqlite depends_on: postgres: condition: service_healthy networks: - nginx_proxy_manager_default api: build: context: . provenance: false env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data environment: NODE_ENV: production INTELLIGENCE_DB: /data/intelligence.sqlite DURIIN_RUN_SCHEDULER: "false" AUTONOMY_EXECUTION_MODE: "${AUTONOMY_EXECUTION_MODE:-shadow}" restart: unless-stopped networks: - nginx_proxy_manager_default intelligence: profiles: [legacy] build: context: . provenance: false command: node workers/index.js env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data environment: NODE_ENV: production DURIIN_DB: /data/archive.sqlite INTELLIGENCE_DB: /data/intelligence.sqlite restart: unless-stopped networks: - nginx_proxy_manager_default autonomy: build: context: . provenance: false command: node workers/autonomy-entrypoint.js env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data environment: NODE_ENV: production DURIIN_DB: /data/archive.sqlite INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_POLL_MS: "${AUTONOMY_POLL_MS:-5000}" cpus: "0.50" mem_limit: 512m restart: unless-stopped networks: - nginx_proxy_manager_default coordinator: build: context: . provenance: false command: node workers/coordinator-entrypoint.js env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data environment: NODE_ENV: production DURIIN_DB: /data/archive.sqlite INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_POLL_MS: "${AUTONOMY_COORDINATOR_POLL_MS:-5000}" cpus: "0.75" mem_limit: 768m restart: unless-stopped networks: - nginx_proxy_manager_default autonomy-outcomes: build: context: . provenance: false command: node workers/outcome-autonomy-entrypoint.js env_file: .env volumes: - ./data:/data environment: NODE_ENV: production INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_OUTCOME_POLL_MS: "${AUTONOMY_OUTCOME_POLL_MS:-60000}" cpus: "0.25" mem_limit: 384m restart: unless-stopped networks: - nginx_proxy_manager_default replay: build: context: . provenance: false command: node workers/replay-entrypoint.js env_file: .env volumes: - ./config.json:/app/config.json:ro - ./data:/data environment: NODE_ENV: production DURIIN_DB: /data/archive.sqlite INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_REPLAY_POLL_MS: "${AUTONOMY_REPLAY_POLL_MS:-15000}" AUTONOMY_REPLAY_DAILY_BUDGET: "${AUTONOMY_REPLAY_DAILY_BUDGET:-100}" AUTONOMY_REPLAY_WATERMARK_DAYS: "${AUTONOMY_REPLAY_WATERMARK_DAYS:-7}" cpus: "0.50" mem_limit: 768m restart: unless-stopped networks: - nginx_proxy_manager_default calibration: build: context: . provenance: false command: node workers/calibration-entrypoint.js env_file: .env volumes: - ./data:/data environment: NODE_ENV: production INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_CALIBRATION_POLL_MS: "${AUTONOMY_CALIBRATION_POLL_MS:-60000}" cpus: "0.25" mem_limit: 384m restart: unless-stopped networks: - nginx_proxy_manager_default execution: build: context: . provenance: false command: node workers/execution-entrypoint.js env_file: .env volumes: - ./data:/data environment: NODE_ENV: production INTELLIGENCE_DB: /data/intelligence.sqlite AUTONOMY_EXECUTION_MODE: "${AUTONOMY_EXECUTION_MODE:-shadow}" AUTONOMY_DEFAULT_NOTIONAL: "${AUTONOMY_DEFAULT_NOTIONAL:-100}" AUTONOMY_EXECUTION_POLL_MS: "${AUTONOMY_EXECUTION_POLL_MS:-10000}" cpus: "0.25" mem_limit: 384m restart: unless-stopped networks: - nginx_proxy_manager_default networks: nginx_proxy_manager_default: external: true volumes: postgres_data: