// the find
LibrePhotos/librephotos
A self-hosted open source photo management service.
LibrePhotos is a self-hosted Google Photos alternative built on Django 5 with genuine ML capabilities — face recognition, scene classification, semantic search via CLIP embeddings, and auto-generated event albums. It's for people who want full control over their photo library without cloud vendor lock-in and are willing to run Docker on hardware with at least 8 GB RAM.
The ML pipeline is more complete than most self-hosted alternatives: CLIP embeddings for semantic search, HDBSCAN clustering for face grouping, and im2txt for image captioning all ship out of the box. The migration history (127 migrations) shows real long-term commitment — this isn't a weekend project that got abandoned. The monorepo consolidation preserved full git history across five previously separate repos, which makes tracking regressions across frontend/backend boundary changes actually feasible. The geocoding layer supports multiple providers (Nominatim, Mapbox, OpenCage, TomTom) with rate limiting built in, not bolted on.
The im2txt captioning model (HughKu/Im2txt) is based on a 2016 paper and produces noticeably worse captions than anything built on modern vision-language models — it's the weakest link in an otherwise current stack. The 8 GB RAM minimum is real; the ML models load into memory and stay there, which makes this a no-go for anyone running it on a NAS or low-power homelab box. There's no GPU acceleration path for the local ML inference — everything runs on CPU, so initial scans of large libraries can take hours. The Django-Q2 task queue is a reasonable choice but it means background job visibility is limited to whatever the UI exposes; there's no native integration with anything like Flower or Celery's monitoring ecosystem.