Immich
Google Photos replacement with on-device AI search. Face recognition and CLIP-powered search run on your own CPU — no cloud, no API key.
Immich is the self-hosted tool most likely to make someone cancel a subscription, and the AI part is why: CLIP search and face recognition run locally, on your CPU, with no external API.
We run it on an 8 GB, 2-core 2011-era laptop board acting as a NAS, with an external library pointing at an existing 12,000-file photo folder. Measured on that machine:
| Job | Observed rate | Notes |
|---|---|---|
| Disk crawl of 12,241 files | about 5 seconds | metadata pass only, no thumbnails yet |
| Thumbnail generation | about 91 photos/minute | all cores busy, single biggest cost |
| OCR (text in photos) | about 18 photos/minute | runs after thumbnails |
| Video transcoding | disabled | see below |
At 91 thumbnails a minute, a 12k library is roughly two hours of solid CPU. There is no shortcut — the work happens on your hardware, which is the bargain you accepted.
Two settings that decide whether it fits
Disable video transcoding. On a CPU-only box it turns a two-hour import into a multi-day one. The trade-off is that HDR and non-4:2:0 videos may look washed out in a desktop browser. For a personal library that is the right trade.
Do not run the ML container on the NAS if a laptop is idle. Immich can point its machine-learning URL at another machine on the network. The app does not care where the embedding is computed.
Honest limits
Face recognition quality on a small library is good; on 12,000 photos the "merge these two people" workflow is still mostly manual. Semantic search depends on the model being loaded, so a cold search after a restart is slow. And 4 GB is genuinely the floor — we would not run this on 2 GB with anything else alongside it.
Pros
- Semantic search actually works: type "beach at sunset" and get your photos
- Face grouping runs locally; nothing leaves the machine
- Runs on 4 GB of RAM if you disable video transcoding
- Mobile apps do background backup like the service it replaces
Cons
- The machine-learning container is the single biggest CPU cost on a small NAS
- Thumbnail generation is a multi-hour job on a 2-core CPU, and it is unavoidable on first import
- The database layer (Postgres plus Redis) means three containers minimum
Alternatives worth a look
Last verified 2026-10-17 (hands-on). Prices and licence terms change — check the vendor page before you buy. Spotted an error?