# Paths (inside containers) DATABASE_URL=sqlite+aiosqlite:////data/db/cinearchive.db QDRANT_URL=http://qdrant:6333 QDRANT_COLLECTION=cinearchive_shots_v1 VIDEOS_DIR=/data/videos ARTIFACTS_DIR=/data/artifacts LIBRARY_DIR=/data/library MODELS_DIR=/data/models # Put the visual archive on any drive (host path mounted into the container) # Examples: D:/CinekiveLibrary E:/stills ./data/library LIBRARY_HOST_PATH=./data/library # ML EMBEDDING_MODEL=google/siglip-so400m-patch14-384 EMBEDDING_BATCH_SIZE=16 DEVICE=auto HF_HOME=/data/models/huggingface # Processing defaults DEFAULT_SAMPLING_MODE=heroes SCENE_DETECT_THRESHOLD=27.0 GENERATE_PREVIEWS=true PREVIEW_DURATION_SEC=2.5 PREVIEW_FORMAT=webp TRASH_RETENTION_DAYS=30 # VLM — use host Ollama (recommended) or compose profile `vlm` # Or configure live in Settings → Craft AI (OpenRouter / Kimi / custom URL) # RTX 5060 Ti 16GB sweet spot: balanced → qwen3-vl:8b OLLAMA_URL=http://host.docker.internal:11434 OLLAMA_MODEL=qwen3-vl:8b VLM_ENABLED=false VLM_MAX_RETRIES=2 VLM_TIMEOUT_SEC=120 ENRICH_TIER=auto ENRICH_VRAM_GB=16 ENRICH_CONTINUOUS=true ENRICH_INTERVAL_SEC=15 ENRICH_BATCH_SIZE=8 ENRICH_QUALITY_MIN=55 ENRICH_REENRICH_FAILS=true # Optional defaults for OpenAI-compatible providers (overridden by Settings UI): # OPENAI_BASE_URL=https://openrouter.ai/api/v1 # OPENAI_API_KEY= # OPENAI_MODEL=google/gemini-2.5-flash # Folder watcher WATCHER_ENABLED=false WATCHER_POLL_SEC=5 # URL / YouTube import (yt-dlp) SEEK_ENABLED=true SEEK_DOWNLOAD_DIR=/data/library/_seek # When YouTube asks to "confirm you're not a bot", log in via your browser cookies: # YTDLP_COOKIES_FROM_BROWSER=chrome # or edge / firefox / brave (optional :ProfileName) # YTDLP_COOKIES=C:/path/to/cookies.txt # Netscape export — preferred on locked-down hosts # ShotDeck bootstrap mirror (personal use — host capture + in-app ingest) SHOTDECK_USER= SHOTDECK_PASS= MIRROR_SCRIPTS_DIR=/app/scripts # Trial loop (host): python scripts/shotdeck_loop.py or scripts/shotdeck_loop.ps1 SHOTDECK_PROJECT_ID= SHOTDECK_LOOP_INTERVAL_MIN=12 SHOTDECK_LOOP_LIMIT_SHOTS=50 SHOTDECK_LOOP_BACKOFF_MIN=35 # Always-on dedupe (cross-archive). New installs default true via library_runtime # after first API boot; existing libraries keep whatever was already running. # Toggle later in Settings → Advanced. Env here only seeds first boot. DEDUPE_ON_INGEST=true DEDUPE_GLOBAL=true DEDUPE_INTERVAL_SEC=300 CINEKIVE_API=http://localhost:8000 # Desktop Docker image pin — must match apps/desktop package.json version CINEKIVE_IMAGE_TAG=0.5.3 # Optional: signed 14-day trial keys (must match mint machine) # CINEKIVE_TRIAL_SECRET= # API API_HOST=0.0.0.0 API_PORT=8000 CORS_ORIGINS=http://localhost:3000 LOG_LEVEL=INFO # Frontend NEXT_PUBLIC_API_URL=http://localhost:8000