Ansel: Resumable Photo Captioning CLI
Ansel captions and tags a macOS Photos library from the terminal, designed for a job too large to finish in one sitting. It reads photo metadata through osxphotos and writes captions and keywords back through photoscript's AppleScript bridge, so every edit is a real Photos edit that syncs with iCloud. The design centers on interruptibility: progress is a local SQLite database keyed by photo UUID, so quitting at any moment, including Ctrl-C, loses nothing and the next run resumes exactly where the last one stopped. It is a small, honest local-first tool built for how the work actually happens, a little at a time.
What it proves
A resumable, local-first batch tool built around interruptibility, with a UUID-keyed SQLite checkpoint so a months-long job survives quitting at any point.
How it was built
Claude Code, test-first, with reads through osxphotos and writes through photoscript's AppleScript bridge so captions and keywords are real Photos edits.
What is real, and where I was learning
What is real: the resumable pipeline, the SQLite checkpoint, and the real Photos writes all work on my own library. Where it is narrow: it is a personal macOS CLI with no web front end, built for my own archive rather than packaged for general use.