# content-ingestor environment — copy to .env for local runs. # Single source of truth for ports: ../../../infrastructure/.env.ports. # Health HTTP CONTENT_INGESTOR_HEALTH_PORT=3825 # Poll cadence (how often the worker scans mac-sync for new photos) INGEST_POLL_INTERVAL_MS=300000 INGEST_BATCH_SIZE=50 # --- Source: mac-sync photo mirror (macsync.photos on black) --- # Direct read of the macsync schema. Switch to mac-sync's HTTP API if its photo # routes are exposed; the PhotoSource interface keeps that swappable. MACSYNC_PG_URL=postgres://readonly@black.lan:25436/macsync # Base URL to fetch a photo's binary bytes (for classification). Resolves a # storage_key to a fetchable object URL (MinIO presigned / mac-sync server route). MACSYNC_OBJECT_BASE_URL=http://black.lan:3201/objects # --- Classifier: @model-boss vision (apricot GPU) --- MODEL_BOSS_BASE_URL=http://apricot.lan:4505 MODEL_BOSS_VISION_MODEL=qwen3-vl-8b-instruct MODEL_BOSS_TIMEOUT_MS=60000 # --- Sink: platform.api (data plane on black:3060) --- PLATFORM_API_BASE_URL=http://black.lan:3060/api/v1 SPECIALIST_TOKEN=changeme SPECIALIST_ID=content-ingestor # Single-tenant at P0: the Person who owns the synced library. Device→user # mapping is the multi-tenant seam (one INGEST_USER_ID until then). INGEST_USER_ID=00000000-0000-0000-0000-000000000000 # --- Planner: configurable posting cadence ("configurable sendings") --- # The deliberate offset that creates the hot/stocked planning window. PLAN_OFFSET_DAYS=7 PLAN_HORIZON_DAYS=7 PLAN_SLOTS_PER_DAY=3 # An asset counts as "hot" if taken within this window AND quality >= threshold. PLAN_HOT_WINDOW_DAYS=14 PLAN_HOT_QUALITY_MIN=0.6 # Logging LOG_LEVEL=info NODE_ENV=development