I take a lot of photos. Like most people, I'd been dumping them into Google Photos for years, mostly for the face-grouping feature — that quiet magic where it just knows which photos have your kid, your friend, your dog in them. Then I started wondering: could I build that myself, on my own hardware, without shipping every photo of my family to a cloud provider?
Turns out, yes — and it became one of the more satisfying infrastructure projects I've built in a while.
This post walks through the architecture, the interesting technical decisions, and a few of the harder problems I ran into along the way.
What it does
At a high level: you upload photos, the system detects faces in them, groups similar faces into "people," and gives you a dashboard to browse, tag, and correct those groupings — all running locally via Docker, no external API calls, no subscription.






