Keep using Photos.app like you always do. Attic quietly backs up your originals and edits to cloud storage you control — on any provider, in any region. One-way, append-only. A safety net, not a second photo manager.
brew install tijs/tap/attic
Attic is a command-line tool that backs up your iCloud Photos library to object storage you own. It works with any provider that speaks the S3 protocol — which most do, from small European hosts to the big clouds. It exports original and edited files via PhotoKit and uploads them with full metadata. Incremental by default — it only uploads what's new.
Exports both the original and the edited version of your photos and videos. No recompression, no quality loss. What you shot — and what you made of it — gets stored.
Each asset is uploaded alongside a JSON file with EXIF data, dates, location, album membership, dimensions, and file hashes.
A manifest stored in your bucket tracks what's been backed up. Subsequent runs skip known assets and only upload what's changed or new.
A built-in verify command checks remote objects against the manifest, re-verifying SHA-256 hashes on every file.
18 seconds of a real backup run
Attic is a standalone macOS binary that runs a four-step pipeline. It reads your Photos library directly via PhotoKit, exports originals and edits to a staging area, then uploads everything to the storage bucket you configured.
Reads Photos.sqlite to discover all assets, their types, sizes, and iCloud status.
Compares the database against the manifest to find assets that haven't been backed up yet.
Exports original and edited files via PhotoKit to a staging directory.
Uploads each original + metadata JSON to your storage bucket, then updates the manifest.
Storage access keys are stored in the macOS Keychain. Never in config files, never in environment variables. The config file only holds the endpoint, region, and bucket name.
If a photo or video isn't downloaded locally, Attic requests it from iCloud via PhotoKit. This means it can back up your entire library, not just what's on disk.
Attic uses Photos.sqlite and the macOS Keychain. It runs on any Mac with a Photos library — your daily driver or a dedicated machine.
Install with brew install tijs/tap/attic. A single binary, no other dependencies needed.
Any provider that supports the S3 protocol — that's most of them, not just Amazon. Create a bucket, generate API keys, and run attic init to configure.
Attic works with any provider that speaks the S3 protocol — an industry standard supported far beyond Amazon. Want your photo backups in the EU? These providers keep your data on European soil.
Everything runs through the attic command. Set up once, then it's just attic backup and occasionally attic verify.
Got a Mac mini sitting around after your OpenClaw experiments? Sign into iCloud Photos on it and let Attic run daily backups via launchd. See the unattended backups guide for the full setup.