Immich stores and shows photos well; what it does not do is curate. This closes that gap by combining the searches — CLIP visual, GPS, EXIF and date — inside one request, so "make albums for all my trips" becomes an operation rather than a script you would have to write first. Deletions go to trash by default and rotation is non-destructive with a one-call revert, which is what makes it reasonable to let an assistant work in bulk.
A client for a self-hosted Immich instance. It searches the library by metadata or by what a photo looks like, curates albums, manages recognised people, repairs metadata and handles the trash — running on your machine and talking only to your Immich.
- Visual search in plain language over CLIP embeddings — "sunset at the beach" — and metadata search by city, state, country, camera make and model, date range or asset type
- GPS markers for every geotagged asset, for working out where photos were taken or building a travel map
- Albums created, renamed, deleted, and curated by adding or removing assets straight from search results
- Public shared links created for an album with download, metadata and expiry settings, then tightened or revoked
- Base64 thumbnails for one asset, a whole album, or an arbitrary set of IDs, so the assistant can actually look at the photos
- Recognised people listed and searched, named, merged when one person was split across clusters, and misattributed faces reassigned
- Per-asset metadata corrected: date taken, GPS, description, favourite and rating
- Non-destructive rotation applied across an album or a selection, and reverted in one call
- ML-detected duplicate groups reviewed, then resolved by choosing which copy to keep and which to trash
- Tags created, coloured, applied and removed in bulk
- The whole trash lifecycle: soft-delete, restore specific assets or everything, and empty it when you mean it
- Library statistics, server version and a connectivity check, with credentials hot-swapped without a restart
- Local files uploaded into the library, optionally straight into an album
A running Immich instance, v1.90 or newer, and an API key from it. Python 3.10 or newer. Point a client at uvx immich-photo-manager with IMMICH_BASE_URL and IMMICH_API_KEY, or install it as a Claude plugin from the repository, which runs its own setup script. Speaks stdio by default; MCP_TRANSPORT=http turns it into a Streamable HTTP service. Uploads are capped at 25MB and to jpg, jpeg, png, heic, mp4 and mov. Duplicate detection needs Immich's ML service. Originals are never fetched, but everything the assistant reads goes to whichever model you use — filenames, dates, EXIF, album lists, and, when you ask it to look at pictures, thumbnails at 250px by default or 1440px previews on request.
One command plus a key — uvx immich-photo-manager, then supply credentials
