projects

2026in progressopen source

Photo editor

A local RAW editor: FastAPI engine, Vue interface, MCP server

Replaces Lightroom in my actual workflow: culling, rating and developing the camera’s ARW files without ever touching the original. The same engine is driven equally by the interface and by an AI agent over MCP.

The rule that shapes the whole design is that truth lives on disk: the RAW is never modified, ratings go in XMP sidecars Lightroom understands, and an edit is a JSON recipe sitting next to the photo. SQLite is just an index a scan can rebuild, and the preview cache lives outside the photo archive, because that folder syncs to the cloud and nothing generated should travel with it. You can delete the entire database without losing a single star.

There is one engine and two hands on it: the Vue interface and an MCP server expose the same operations, so Claude can cull a shoot, rate it or export it just as I do from the screen. Building for an agent forced the API to be honest — everything the interface does exists as an endpoint — and forced the trust boundaries: long jobs go through a shared sequential queue, and every deletion is a dry run unless explicitly confirmed.