-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
740 lines (693 loc) · 21.7 KB
/
docker-compose.yml
File metadata and controls
740 lines (693 loc) · 21.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
services: # ========================================================================== # DEVICE ROUTER — Device-Specific Container Routing # ========================================================================== device-router: build: ./services/device-router container_name: origin-device-router ports: - "8017:8000" environment: - GTM_INTERCEPT_URL=http://gtm-intercept:8000 - VERCEL_URL=http://vercel:8000 # ========================================================================== # NEURAL MONITOR — Ensemble Drift Detection # ========================================================================== neural-monitor: build: ./services/lam-forge container_name: origin-neural-monitor ports: - "8030:8030" command: python -m uvicorn neural_monitor:app --host 0.0.0.0 --port 8030 environment: - REDIS_URL=redis://redis:6379 - DRIFT_CHECK_INTERVAL=300 - DRIFT_THRESHOLD=0.3 depends_on: - redis restart: unless-stopped # ========================================================================== # KNOWLEDGE MESH — Cross-Site Federated Learning # ========================================================================== knowledge-mesh: build: ./services/lam-forge container_name: origin-knowledge-mesh ports: - "8040:8040" command: python -m uvicorn knowledge_mesh:app --host 0.0.0.0 --port 8040 environment: - REDIS_URL=redis://redis:6379 - DP_EPSILON=1.0 - MIN_SITES_FOR_AGGREGATION=5 - SYNC_INTERVAL=3600 depends_on: - redis restart: unless-stopped # ========================================================================== # DIFF ENFORCER — Brand Safety Guardrails # ========================================================================== diff-enforcer: build: ./services/lam-forge container_name: origin-diff-enforcer ports: - "8050:8050" command: python -m uvicorn diff_enforcer:app --host 0.0.0.0 --port 8050 environment: - REDIS_URL=redis://redis:6379 - MAX_LAYOUT_SHIFT=0.15 - MAX_SEMANTIC_DRIFT=0.3 depends_on: - redis restart: unless-stopped # ========================================================================== # EVALUATION HARNESS — Calibration Gatekeeper # ========================================================================== evaluation-harness: build: ./services/lam-forge container_name: origin-evaluation-harness ports: - "8090:8080" command: python -m uvicorn evaluation_harness:app --host 0.0.0.0 --port 8080 environment: - REDIS_URL=redis://redis:6379 - MONGO_URL=mongodb://mongo:27017 - MODEL_DIR=/models/lam - MIN_ACCURACY=0.75 - MAX_CALIBRATION_ERROR=0.15 volumes: - lam-models:/models/lam:ro depends_on: - redis - mongo restart: unless-stopped # ========================================================================= # ========================================================================= # =========================================================================
# ==========================================================================
# VERTICAL HEADS — Per-Vertical Specialist Architecture
# ==========================================================================
vertical-heads:
build: ./services/lam-forge
container_name: origin-vertical-heads
ports:
- "8110:8110"
command: python -m uvicorn vertical_heads:app --host 0.0.0.0 --port 8110
environment:
- REDIS_URL=redis://redis:6379
- MONGO_URL=mongodb://mongo:27017
- MODEL_DIR=/models/lam
volumes:
- lam-models:/models/lam
depends_on:
- redis
- mongo
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
restart: unless-stopped
= # REWARD SHAPING — Multi-Objective Pareto Optimization # ========================================================================== reward-shaping: build: ./services/lam-forge container_name: origin-reward-shaping ports: - "8100:8100" command: python -m uvicorn reward_shaping:app --host 0.0.0.0 --port 8100 environment: - REDIS_URL=redis://redis:6379 depends_on: - redis restart: unless-stopped= # CURRICULUM TRAINER — Pedagogical Learning # ========================================================================== curriculum-trainer: build: ./services/lam-forge container_name: origin-curriculum-trainer ports: - "8095:8095" command: python -m uvicorn curriculum:app --host 0.0.0.0 --port 8095 environment: - REDIS_URL=redis://redis:6379 - MONGO_URL=mongodb://mongo:27017 - MODEL_DIR=/models/lam volumes: - lam-models:/models/lam depends_on: - redis - mongo restart: unless-stopped= # MONGODB — Session History & Tombstones # ========================================================================== mongo: image: mongo:7 container_name: origin-mongo ports: - "27017:27017" volumes: - mongo-data:/data/db restart: unless-stoppedvolumes: - device-router-data:/data/device-router depends_on: - gtm-intercept - vercel restart: unless-stopped # ========================================================================== # LAM EXPERIMENT — A/B Testing with Tool Chain Learning # ========================================================================== lam-experiment: build: ./services/lam-experiment container_name: origin-lam-experiment ports: - "8018:8000" environment: - FIGMA_URL=http://figma:8000 - VERCEL_URL=http://vercel:8000 - DEVICE_ROUTER_URL=http://device-router:8000 - GTM_INTERCEPT_URL=http://gtm-intercept:8000 - WEB_SCRAPER_URL=http://web-scraper:8000 - IMAGE_COMPARE_URL=http://image-compare:8000 - COMMERCE_URL=http://commerce:8000 - TEMPLATE_GEN_URL=http://template-gen:8000 volumes: - experiment-data:/data/experiments depends_on: - figma - vercel - device-router - web-scraper - image-compare restart: unless-stopped # ========================================================================== # LAM FORGE — Training & Inference Engine # ========================================================================== lam-forge-training: build: ./services/lam-forge container_name: origin-lam-forge-training command: python training_loop.py environment: - REDIS_URL=redis://redis:6379 - MODEL_DIR=/models/lam - BATCH_SIZE=32 - LEARNING_RATE=1e-4 volumes: - lam-models:/models/lam - lam-training-data:/data/lam depends_on: - redis deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped lam-forge-inference: build: ./services/lam-forge container_name: origin-lam-forge-inference ports: - "8060:8060" command: python -m uvicorn inference_spawner:app --host 0.0.0.0 --port 8060 environment: - REDIS_URL=redis://redis:6379 - CONTAINER_POOL_SIZE=10 - CONTAINER_TTL_SECONDS=300 volumes: - /var/run/docker.sock:/var/run/docker.sock - lam-models:/models/lam:ro depends_on: - redis restart: unless-stopped lam-forge-gads: build: ./services/lam-forge container_name: origin-lam-forge-gads ports: - "8070:8070" command: python -m uvicorn gads_deployment:app --host 0.0.0.0 --port 8070 environment: - REDIS_URL=redis://redis:6379 - GOOGLE_ADS_CONFIG=/credentials/google-ads.yaml - BATCH_INTERVAL=900 volumes: - ./credentials:/credentials:ro depends_on: - redis restart: unless-stopped # ========================================================================== # REDIS — State Store for LAM System # ========================================================================== redis: image: redis:7-alpine container_name: origin-redis ports: - "6380:6379" command: redis-server --appendonly yes volumes: - redis-data:/data restart: unless-stopped # ========================================================================== # TEMPLATE GEN — Next.js Device-Specific Templates # ========================================================================== template-gen: build: ./services/template-gen container_name: origin-template-gen ports: - "8019:8000" restart: unless-stopped # ========================================================================== # IMAGE COMPARE — Visual Accuracy Scoring # ========================================================================== image-compare: build: ./services/image-compare container_name: origin-image-compare ports: - "8020:8000" volumes: - image-compare-data:/data/image-compare restart: unless-stopped # ========================================================================== # GTM INTERCEPT — Real-Time Event Capture # ========================================================================== gtm-intercept: build: ./services/gtm-intercept container_name: origin-gtm-intercept ports: - "8012:8000" environment: - GTM_CONTAINER_ID=${GTM_CONTAINER_ID:-} - LAM_ROUTER_URL=http://lam-router:8000 - LAM_FORGE_URL=http://lam-forge-inference:8060 - GA_FORWARD=${GA_FORWARD:-true} volumes: - gtm-data:/data/gtm depends_on: - lam-router restart: unless-stopped # ========================================================================== # LAM ROUTER — Traffic Routing (Pi5 + Hailo8) # ========================================================================== lam-router: build: ./services/lam-router container_name: origin-lam-router ports: - "8013:8000" environment: - HAILO_ENABLED=${HAILO_ENABLED:-false} - DECISION_TIMEOUT_MS=100 - REDIS_URL=redis://redis:6379 volumes: - lam-data:/data/lam - lam-models:/models/lam depends_on: - redis restart: unless-stopped # ========================================================================== # CONTENT GENERATION # ========================================================================== image-gen: build: ./services/image-gen container_name: origin-image-gen ports: - "8014:8000" environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - STABILITY_API_KEY=${STABILITY_API_KEY:-} - REPLICATE_API_TOKEN=${REPLICATE_API_TOKEN:-} - FAL_API_KEY=${FAL_API_KEY:-} volumes: - image-data:/data/images restart: unless-stopped text-gen: build: ./services/text-gen container_name: origin-text-gen ports: - "8015:8000" environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} volumes: - text-data:/data/text restart: unless-stopped web-scraper: build: ./services/web-scraper container_name: origin-web-scraper ports: - "8016:8000" environment: - FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY} volumes: - scraper-data:/data/scraper restart: unless-stopped # ========================================================================== # INTEGRATIONS # ========================================================================== figma: build: ./services/figma-mcp container_name: origin-figma ports: - "8010:8000" environment: - FIGMA_API_KEY=${FIGMA_PAT:-${FIGMA_API_KEY}} volumes: - figma-data:/data/figma restart: unless-stopped vercel: build: ./services/vercel-mcp container_name: origin-vercel ports: - "8011:8000" environment: - VERCEL_TOKEN=${VERCEL_TOKEN} - VERCEL_TEAM_ID=${VERCEL_TEAM_ID:-} volumes: - vercel-data:/data/vercel restart: unless-stopped # ========================================================================== # AUTO-CLAUDE — Primary AI Agent # ========================================================================== auto-claude: build: ./services/auto-claude container_name: origin-auto-claude ports: - "8000:8000" environment: - LLM_PROVIDER=${LLM_PROVIDER:-claude} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - GRAPHITI_ENABLED=true - FALKORDB_URL=redis://falkordb:6379 - CODEX_URL=http://codex:8000 - VAULT_URL=http://vault:8000 - MEMORY_URL=http://memory:8000 - MCP_HUB_URL=http://mcp-hub:8000 - FIGMA_URL=http://figma:8000 - VERCEL_URL=http://vercel:8000 - IMAGE_GEN_URL=http://image-gen:8000 - TEXT_GEN_URL=http://text-gen:8000 - WEB_SCRAPER_URL=http://web-scraper:8000 - GTM_INTERCEPT_URL=http://gtm-intercept:8000 - LAM_ROUTER_URL=http://lam-router:8000 - LAM_FORGE_URL=http://lam-forge-inference:8060 - LAM_EXPERIMENT_URL=http://lam-experiment:8000 - DEVICE_ROUTER_URL=http://device-router:8000 - TEMPLATE_GEN_URL=http://template-gen:8000 - IMAGE_COMPARE_URL=http://image-compare:8000 - COMMERCE_URL=http://commerce:8000 - GITHUB_TOKEN=${GITHUB_TOKEN} volumes: - auto-claude-data:/data/auto-claude - auto-claude-worktrees:/data/worktrees - ${PROJECTS_DIR:-/Users/root1/projects}:/projects:rw - system-state:/system:ro depends_on: - codex - vault - memory - figma - vercel - lam-experiment - device-router - falkordb - lam-forge-inference restart: unless-stopped # ========================================================================== # CORE SERVICES # ========================================================================== ui: build: ./services/ui container_name: origin-ui ports: - "8080:8000" environment: - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - CODEX_URL=http://codex:8000 - MCP_HUB_URL=http://mcp-hub:8000 - GTM_INTERCEPT_URL=http://gtm-intercept:8000 - LAM_EXPERIMENT_URL=http://lam-experiment:8000 depends_on: - codex - mcp-hub restart: unless-stopped codex: build: ./services/codex container_name: origin-codex ports: - "8001:8000" environment: - JWT_SECRET=${JWT_SECRET} - REQUIRE_AUTH=true - SENTINEL_ALERTS_DIR=/vault/sentinel/alerts volumes: - sentinel-alerts:/vault/sentinel/alerts:ro - codex-rules:/codex/rules:ro - system-state:/system:ro restart: unless-stopped mcp-hub: build: ./services/mcp-hub container_name: origin-mcp-hub ports: - "8002:8000" environment: - JWT_SECRET=${JWT_SECRET} - CODEX_URL=http://codex:8000 - VAULT_URL=http://vault:8000 - MEMORY_URL=http://memory:8000 - AUTO_CLAUDE_URL=http://auto-claude:8000 - FIGMA_URL=http://figma:8000 - VERCEL_URL=http://vercel:8000 - IMAGE_GEN_URL=http://image-gen:8000 - TEXT_GEN_URL=http://text-gen:8000 - WEB_SCRAPER_URL=http://web-scraper:8000 - GTM_INTERCEPT_URL=http://gtm-intercept:8000 - LAM_ROUTER_URL=http://lam-router:8000 - LAM_FORGE_URL=http://lam-forge-inference:8060 - LAM_EXPERIMENT_URL=http://lam-experiment:8000 - DEVICE_ROUTER_URL=http://device-router:8000 - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - GITHUB_TOKEN=${GITHUB_TOKEN} - FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY} volumes: - mcp-data:/data depends_on: - codex - vault - memory restart: unless-stopped vault: build: ./services/vault container_name: origin-vault ports: - "8004:8000" environment: - VAULT_MASTER_KEY=${JWT_SECRET} - VAULT_DIR=/vault volumes: - vault-data:/vault - sentinel-alerts:/vault/sentinel/alerts:rw - codex-audit:/vault/codex/audit:rw restart: unless-stopped memory: build: ./services/memory-s3 container_name: origin-memory ports: - "8007:8000" environment: - EBS_DATA_DIR=/data/memory - B2_ENABLED=${B2_ENABLED:-true} - B2_KEY_ID=${B2_KEY_ID} - B2_APP_KEY=${B2_APP_KEY} - B2_BUCKET_NAME=${B2_MEMORY_BUCKET:-origin-os-memory} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} volumes: - memory-data:/data/memory restart: unless-stopped orchestrator: build: ./services/orchestrator container_name: origin-orchestrator ports: - "8005:8000" environment: - MCP_HUB_URL=http://mcp-hub:8000 - CODEX_URL=http://codex:8000 - VAULT_URL=http://vault:8000 - MEMORY_URL=http://memory:8000 - AUTO_CLAUDE_URL=http://auto-claude:8000 - LAM_EXPERIMENT_URL=http://lam-experiment:8000 - DEVICE_ROUTER_URL=http://device-router:8000 volumes: - orchestrator-data:/data/orchestrator depends_on: - mcp-hub - vault restart: unless-stopped backup: build: ./services/backup container_name: origin-backup ports: - "8006:8000" environment: - BACKUP_DIR=/backups - B2_KEY_ID=${B2_KEY_ID:-} - B2_APP_KEY=${B2_APP_KEY:-} - B2_BUCKET_NAME=${B2_BUCKET_NAME:-} volumes: - backup-data:/backups - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped sentinel: build: ./services/sentinel container_name: origin-sentinel environment: - S3_ENDPOINT=https://s3.us-west-004.backblazeb2.com - S3_KEY=${B2_KEY_ID} - S3_SECRET=${B2_APP_KEY} - BACKUP_BUCKET=origin-os-backups - ALERT_OUTPUT_DIR=/vault/sentinel/alerts volumes: - sentinel-alerts:/vault/sentinel/alerts:rw depends_on: - vault restart: unless-stopped falkordb: image: falkordb/falkordb:latest container_name: origin-falkordb ports: - "6379:6379" volumes: - falkordb-data:/data restart: unless-stopped # ========================================================================== # COMMERCE MCP — Headless E-Commerce Integration # ========================================================================== commerce: build: ./services/commerce-mcp container_name: origin-commerce ports: - "8021:8000" environment: - SHOPIFY_STORE_DOMAIN=${SHOPIFY_STORE_DOMAIN:-} - SHOPIFY_STOREFRONT_TOKEN=${SHOPIFY_STOREFRONT_TOKEN:-} - MEDUSA_URL=${MEDUSA_URL:-http://medusa:9000} - SALEOR_URL=${SALEOR_URL:-} - BIGCOMMERCE_STORE_HASH=${BIGCOMMERCE_STORE_HASH:-} - BIGCOMMERCE_ACCESS_TOKEN=${BIGCOMMERCE_ACCESS_TOKEN:-} - SWELL_STORE_ID=${SWELL_STORE_ID:-} - SWELL_PUBLIC_KEY=${SWELL_PUBLIC_KEY:-} volumes: - commerce-data:/data/commerce restart: unless-stopped # ========================================================================== # MONITORING — Prometheus & Grafana # ========================================================================== prometheus: image: prom/prometheus:latest container_name: origin-prometheus ports: - "9090:9090" volumes: - ./services/lam-forge/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./services/lam-forge/monitoring/alerts.yml:/etc/prometheus/alerts.yml:ro - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' restart: unless-stopped grafana: image: grafana/grafana:latest container_name: origin-grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} volumes: - mongo-data: name: origin-mongo-data grafana-data:/var/lib/grafana - ./services/lam-forge/monitoring/lam_dashboard.json:/var/lib/grafana/dashboards/lam_dashboard.json:ro depends_on: - prometheus restart: unless-stoppedvolumes: # Core mcp-data: name: origin-mcp-data vault-data: name: origin-vault-data orchestrator-data: name: origin-orchestrator-data backup-data: name: origin-backup-data memory-data: name: origin-memory-data # Security sentinel-alerts: name: origin-sentinel-alerts codex-audit: name: origin-codex-audit codex-rules: name: origin-codex-rules system-state: name: origin-system-state # Auto-Claude auto-claude-data: name: origin-auto-claude-data auto-claude-worktrees: name: origin-auto-claude-worktrees falkordb-data: name: origin-falkordb-data # Integrations figma-data: name: origin-figma-data vercel-data: name: origin-vercel-data # Content Generation image-data: name: origin-image-data text-data: name: origin-text-data scraper-data: name: origin-scraper-data # GTM + LAM gtm-data: name: origin-gtm-data lam-data: name: origin-lam-data lam-models: name: origin-lam-models lam-training-data: name: origin-lam-training-data # Redis redis-data: name: origin-redis-data # Device Routing + Experiments device-router-data: name: origin-device-router-data experiment-data: name: origin-experiment-data image-compare-data: name: origin-image-compare-data commerce-data: name: origin-commerce-data # Monitoring prometheus-data: name: origin-prometheus-data mongo-data: name: origin-mongo-data grafana-data: name: origin-grafana-datanetworks: default: name: origin-network