# 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 macsync.photos (db + user + schema are all `quinn_macsync` / # `macsync`; container `quinn-db-macsync` on black:25436). The PhotoSource interface # keeps the source swappable if mac-sync's HTTP photo routes are later exposed. MACSYNC_PG_URL=postgres://quinn_macsync:CHANGEME@black.lan:25436/quinn_macsync # --- Object store: photo binaries in MinIO (S3 API) --- # Read over the S3 API (credentialed) so it works against a PRIVATE bucket — the # mac-sync server's :3201 object route is localhost-bound on black, not the path. MINIO_ENDPOINT=black.lan MINIO_PORT=9000 MINIO_USE_SSL=false MINIO_ACCESS_KEY=CHANGEME MINIO_SECRET_KEY=CHANGEME MINIO_BUCKET=mac-sync # --- Classifier: @model-boss vision coordinator (apricot GPU) --- # The classifier POSTs the contrastive primitive /v1/vision/score (verified live; # there is NO server-side /score_image_rubric route — that's an MCP-only helper). # Model must be `vision`-category (siglip2-so400m, what imajin-semantic uses); a # `vlm` like qwen3-vl-8b-instruct is the wrong category for the contrastive scorer. MODEL_BOSS_BASE_URL=http://apricot.lan:8210 MODEL_BOSS_VISION_MODEL=siglip2-so400m 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