finds.dev← search

// the find

LibrePhotos/librephotos

★ 7,999 · Python · MIT · updated Jul 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →