-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Check logs:
docker compose logs winnowCommon causes:
-
Missing required env var —
IMMICH_URLorAPI_KEYnot set -
Cannot reach Immich — check the URL and that Immich is running; use
http://nothttps://unless you have TLS set up
Your API key has been revoked or expired. Generate a new one in Immich → Account Settings → API Keys and update API_KEY in your .env.
Set VERBOSE=true in .env (or pass -e VERBOSE=true) to enable DEBUG-level output on the console. Useful for tracing exactly which images are being fetched, filtered, and selected.
The log file at /app/winnow.log always captures DEBUG regardless of VERBOSE:
docker exec winnow cat /app/winnow.log- Make sure Immich has completed face recognition and you have named people in your library
-
YEARS_FILTERdefaults to 10 years — increase it if your tagged photos are older -
MIN_FACE_COUNTskips people with few photos — lower or remove it
- Confirm
FRIGATE_URLis reachable from inside the container:docker exec winnow curl $FRIGATE_URL/api/stats - Check Frigate v0.16+ — older versions don't have the face training API
- Set
DRY_RUN=trueto verify selection without uploading
winnow downloads InsightFace and HuggingFace (SigLIP) models on first run.
- Ensure the container has internet access
- Confirm the model volume is mounted and writable
- If behind a proxy, set
HTTP_PROXY/HTTPS_PROXYenv vars
Use the :cpu image tag (ghcr.io/sudolulo/winnow:cpu) which omits the CUDA base entirely. Or set FORCE_CPU=true with :latest to disable GPU at runtime.
Everything works on CPU but embedding computation is slower — typically tens of seconds per person instead of under a second on GPU.
If you have a GPU but it's not being used:
- Confirm the NVIDIA container toolkit is installed:
docker run --rm --gpus all nvidia/cuda:13.3.0-base-ubuntu22.04 nvidia-smi - Confirm the
deploy.resources.reservations.devicesblock is present incompose.yml - Set
VERBOSE=trueand check the logs — winnow logs which ONNX execution providers are active at startup (should showCUDAExecutionProvider)
The upload tracker is stored in CACHE_DIR (/app/.if_cache by default). If this volume isn't persisted between runs, the tracker resets and images are re-uploaded.
Make sure /app/.if_cache is mounted to a persistent host path.
To clear the upload history for one person and start fresh:
RESET_PERSON=JohnRemove this after one run — it clears the history and then processes normally.
-
Too blurry: Lower
BLUR_THRESHOLD(default 100) — e.g.50accepts more blur -
Face too small: Lower
MIN_FACE_WIDTH(default 50px) -
Low confidence detections included: Raise
MIN_CONFIDENCE(default 0.7) -
Rejected images being re-tried: Set
RETRY_REJECTED=truefor one run