cairn reconciles your iPhone photo library against your own Immich server. When you delete a photo on your phone, cairn moves the matching photo on Immich to Trash.
That's the whole job. cairn doesn't upload photos, show albums, edit metadata, or run AI — the Immich app already does those things. cairn closes the one loop the Immich app doesn't: photos that live on the server after you've deleted them from your phone.
HOW IT WORKS
— Content identity is SHA1 (the same identifier Immich uses server-side).
— cairn subscribes to iOS's deletion log, so it sees soft-deletes as you make them.
— A configurable quarantine window holds confirmed deletions before anything moves, so an accidental mass-offload has time to be caught.
— Every run shows you the candidate list first. Nothing happens on the server until you confirm.
SAFETY MODEL
— Trash, not delete. cairn moves assets into your Immich Trash — Immich retains them for 30 days, and restore is one tap.
— Percent cap + floor. If a single run would move more than a threshold of your matched photos to Trash, it aborts without touching the server.
— Breadcrumbs. Every run is tagged on Immich (cairn/v1/run/[id]) so you can find it server-side.
— Forensic journal. Local append-only log records every step — planned, tagged, trashed, restored, failed.
— Exclusions. Protect specific photos from ever being flagged.
— Indexing scope. Restrict cairn to a specific set of Photos albums. Photos outside the scope are silently ignored — never hashed, never proposed for trash. Useful if you want to manage just one album and leave synced family albums alone.
PRIVACY
— No analytics, no telemetry, no crash reporting, no ads.
— No cairn backend. Your iPhone talks directly to your Immich server using your API key.
— Credentials stay in the iOS Keychain. Nothing leaves your device besides requests you configured.
REQUIREMENTS
— An Immich server you run or control.
— An Immich API key. cairn requests these scopes: asset.read, asset.view, asset.download, asset.delete, tag.create, tag.asset, tag.read. The Setup screen lists them when you paste your key.
cairn is not affiliated with the Immich project. It talks to Immich over its public API; compatibility only.
Source is MIT-licensed at github.com/glarue/cairn.
Ratings & Reviews
This app hasn’t received enough ratings or reviews to display an overview.
Faster first scan. Cairn can match phone photos to the copies already in Immich (by filename and capture date) and trust the server's checksum instead of re-hashing — hours down to seconds on iCloud-Optimized libraries. Optional; turn it on under Settings → Library → "Trust server checksums."
Stronger deletion safety. A run of fixes ensures cairn never proposes trashing a server photo that's still on your phone — including edited photos, Live Photos, hidden and shared assets, and capture-time rounding. Fixes the case where a photo still on your device showed up "aging out" in Pending Review.
Correctness and performance. A broad internal review hardened the deletion engine (restores, Live Photo pairs, delete-then-restore-offline), cut UI stutter, and sped up large-library syncs — including a long silent gap on the first scan of 100k+ photo libraries.
Clearer sync progress. Long syncs now show the file downloading from iCloud, live server-fetch progress instead of a frozen counter, a time estimate that accounts for iCloud throttling, and a separate scan line so the bar no longer fills and snaps back.
Reworked Settings. Clear categories with at-a-glance summaries, a quick-settings card for the knobs you revisit most, and search. Sign-in now lives under Connection.
Smaller additions:
- "Don't propagate old deletes" — clear old photos off your phone without mirroring those deletes to the server.
- "Open in Immich" opens the Immich app when installed, the browser otherwise.
- Diagnostic logging is now an opt-in toggle, off by default.
- Backup/restore now includes the hash cache, plus faster connection readings, dark-mode toggle fixes, and a more reliable launch.
Version 0.4.0
The developer, Graham Larue, indicated that the app’s privacy practices may include handling of data as described below. For more information, see the developer’s privacy policy .
Data Not Collected
The developer does not collect any data from this app.
Privacy practices may vary, for example, based on the features you use or your age. Learn More
Accessibility
The developer has not yet indicated which accessibility features this app supports. Learn More
Information
Seller
Graham Larue
Size
8.4 MB
Category
Photo & Video
Compatibility
Requires iOS 17.0 or later.
iPhone Requires iOS 17.0 or later.
Mac Requires macOS 14.0 or later and a Mac with Apple M1 chip or later.