phota
Every photo folder I touch turns into a mess. Camera dumps next to screenshots next to exports, five near-identical shots of the same thing. phota is the cleanup tool I wanted: type phota in a terminal and a small control window opens on the folder I already have open in Finder. No importing, no library. The folder stays a folder.

The idea
Photo apps want to own my photos. Import them, organize a copy inside a database, and the original folder is still a mess. I wanted the opposite: a tool that walks into the folder, tidies it in place, and leaves. Re-ordering is written back as numbered filenames, so the order survives anywhere. Repeats are found with a perceptual hash and only flagged, nothing moves until I say so. Anything that touches disk writes an undo manifest first.

How it works
A Python engine scans the folder once into a local SQLite index: EXIF, sharpness, exposure, perceptual hashes, burst groups. A FastAPI server wraps the engine and serves a small React app on localhost, so the window is just a browser doing its best impression of a utility. There is an AI layer for semantic search and picking the best shot of a burst, but it stays hidden until you bring your own key (Claude, GPT, or a local model). Without a key, everything local still works.
Built with
Python, FastAPI, and SQLite for the engine. React, Vite, and Tailwind for the window. Built with Claude Code, spec first: the rule that nothing touches originals without an explicit apply came before any feature, and 193 tests hold it in place.
View the code on GitHub ↗