Files
winnow/compose.yml
T
flanandgithub-actions[bot] d99d607fc8 refactor: rename CACHE_DIR → DATA_DIR, container path .if_cache → data (#21)
* refactor: rename CACHE_DIR to DATA_DIR, default path .if_cache → data

CACHE_DIR held both the embedding cache and the SQLite tracker DB, making
the name misleading. DATA_DIR is more accurate.

- Config reads DATA_DIR first; falls back to CACHE_DIR with a deprecation
  warning so existing setups don't break on upgrade
- Default local path: data (was .if_cache)
- Docker default path: /app/data (was /app/.if_cache)
- Internal references (embeddings.py, upload_tracker.py) updated to DATA_DIR
- compose.yml, .env.example, README, wiki, and changelog updated
- Version bumped to 0.5.1

* chore: update lockfile

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 17:59:48 -04:00

88 lines
5.0 KiB
YAML

services:
winnow:
image: ghcr.io/sudolulo/winnow:latest
container_name: winnow
environment:
# ── Required ──────────────────────────────────────────────────────────
- IMMICH_URL=${IMMICH_URL}
- API_KEY=${API_KEY}
- FRIGATE_URL=${FRIGATE_URL}
# ── Mode & Strategy ───────────────────────────────────────────────────
# Auto mode is active by default when no TTY is present (Docker/cron).
# Set AUTO_MODE=true to force auto mode in an interactive terminal.
# To run interactively: docker exec -it winnow winnow
# - VERBOSE=true # Enable DEBUG-level console output
# STRATEGY: auto = objective diversity (recommended), standard = 30 imgs, broad = 100 imgs
- STRATEGY=auto
# - LIMIT=50 # Custom image count; overrides STRATEGY preset
# ── People Filtering ──────────────────────────────────────────────────
# - ONLY_PEOPLE=John,Jane # Comma-separated; process only these people
# - SKIP_PEOPLE=Unknown # Comma-separated; skip these people
# - MIN_FACE_COUNT=5 # Skip people with fewer than N assets in Immich
# - YEARS_FILTER=10 # Only include images from the last N years (default: 10)
# - MERGE_DUPLICATE_PEOPLE=true # Auto-merge Immich people with the same name (keeps most assets)
# ── Image Quality ─────────────────────────────────────────────────────
# - MIN_FACE_WIDTH=50 # Minimum face width in pixels (default: 50)
# - FACE_MARGIN=0.15 # Padding around face crop as fraction (default: 0.15)
# - ENABLE_FACE_ALIGNMENT=true # Align face before cropping (default: true)
# - USE_FULL_RESOLUTION=true # Use full-res images vs thumbnails (default: true)
# - MIN_CONFIDENCE=0.7 # Minimum face detection confidence (default: 0.7)
# - BLUR_THRESHOLD=100.0 # Laplacian blur threshold; lower = accept more blur (default: 100.0)
# - MAX_AUTO_IMAGES=80 # Hard cap on auto-diversity selection (default: 20)
# ── Caching & Models ──────────────────────────────────────────────────
# - FORCE_CPU=true # Disable GPU, fall back to CPU
# - OPENVINO_DEVICE=GPU # Intel variant only: use Arc/iGPU instead of CPU (default: CPU)
# - ENABLE_CACHE=false # Disable embedding cache (default: true)
- DATA_DIR=/app/data
- INSIGHTFACE_HOME=/models/.insightface
# ── Tracker overrides (one-shot, remove after use) ────────────────────
# - DRY_RUN=true # Preview selection without downloading/uploading
# - RETRY_REJECTED=true # Re-attempt previously rejected images
# - RESET_PERSON=John # Clear uploaded+rejected history for one person
# ── Scheduling ────────────────────────────────────────────────────────
# CRON_SCHEDULE controls container lifetime:
# unset — run once on startup, then exit
# empty string — stay alive, run nothing; trigger manually with:
# docker exec -it winnow winnow
# cron expression — run on startup, then on schedule
# - CRON_SCHEDULE= # Manual mode (keep alive, no auto-run)
# - CRON_SCHEDULE=0 3 * * 0 # Every Sunday at 3 AM
# - CRON_SCHEDULE=0 3 1 * * # First of every month
volumes:
# Replace with absolute paths on your host, e.g. /opt/winnow/models
- /path/to/winnow/models:/models
- /path/to/winnow/data:/app/data
- /path/to/winnow/output:/app/frigate_train
restart: unless-stopped
# ── GPU device passthrough ─────────────────────────────────────────────────
# NVIDIA (default — requires nvidia-container-toolkit):
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
#
# AMD ROCm — replace the deploy block above with:
# devices:
# - /dev/kfd
# - /dev/dri
# group_add:
# - video
# - render
#
# Intel Arc / iGPU — replace the deploy block above with:
# devices:
# - /dev/dri
# group_add:
# - render
# Also set: OPENVINO_DEVICE=GPU in the environment section above.