A local-first, read-only AI photo indexer for macOS. Walks a photo library on disk and runs semantic search, zero-shot tagging, and face detection/clustering entirely on-device — nothing uploaded, nothing modified.
Recorded on the author’s own library of 7,058 photos.
Years of photos and RAW files sitting on disk are only searchable by folder and date unless they're uploaded to a cloud photo service — which means handing over a personal photo library (including whatever's in it) to a third party in exchange for search. The alternative was to build the same category of tool — semantic search, tagging, face recognition — but keep every byte on the machine it started on.
PhotoMind walks a photo library, extracts EXIF metadata and generates thumbnails into a local SQLite database, then runs an entirely on-device AI pipeline: CLIP embeddings for "a dog on the beach"-style natural-language search, zero-shot tagging against a hand-built taxonomy, and face detection/clustering that groups photos by person — all through a FastAPI backend and a React gallery UI at 127.0.0.1:8000.

~/.photo-mind/. Source photos are only ever read, never moved or modified.| Backend | Python — Click CLI + FastAPI server |
| Frontend | Vite + React 19 gallery SPA |
| Search | open_clip ViT-B-32-quickgelu, brute-force cosine similarity |
| Faces | InsightFace buffalo_l via CoreML + DBSCAN clustering |
| Storage | SQLite (WAL mode) with an FTS5 search index, entirely outside the repo |
A working local tool, in daily personal use, and the reference implementation for Manzar — its video-indexing counterpart, described elsewhere in this list.
If your data is sensitive by nature — clinical, personal, or otherwise — local-first AI is often more practical than it looks. Happy to talk through what that would take.