A darkroom,
not a dashboard.
Everything the studio does happens on your machine — the ingest, the culling pass, the masking, the rendering. Your card goes into the reader and comes out as a project you can work in; the photographs never leave the desk, because there is nowhere for them to go.
You keep the negatives. There is nothing to subscribe to.
A card, or a folder
Sony, Canon, Nikon, Fuji — if the camera wrote a RAW and a preview, it will come in. Preview JPEGs are pulled first and the full files are copied underneath them, so the screen fills up long before the drive is done.
A recipe, and the pixels
Every edit becomes a RawTherapee .pp3 file you can open in a text editor, plus the render and an XMP sidecar, so the same frame can be finished by hand in Photoshop or GIMP if you want to take it further.
Seven repositories
Each module does one job and can be replaced without disturbing the rest. If you only want the culling, you run the culling — the rest stays on disk, unstarted.
Four things happen, in this order.
The card goes in.
You dump a card. It builds previews instantly so you can start culling while it thinks in the background — captions, aesthetic sense, edge maps. No progress bar that blocks you.
You look, and press a number.
A frameless overlay sits over the viewer you already use and shows what the machine noticed about the frame on screen. The scores are yours to overrule — it is a second opinion, not a verdict.
You say what you want done.
“Lift face 0.6, keep dress, don’t touch sky.” It listens, writes the settings for that file, and shows you the result without a 120 MB round trip through anything.
Or you go to bed.
Point it at a folder and leave. By morning a few hundred frames have been through the long pass, and the ones it wasn’t sure about are waiting for you rather than pretending they are finished.
What that is, under the hood
A sequential Linux path (SDhopper v3) and a concurrent Windows path (Batchline v4). The Windows path runs a CPU producer — scan, hash, EXIF — against a GPU consumer so both stay busy; the Linux path reads kernel I/O statistics and applies exponential moving averages to spot drive degradation mid-ingest. Both quietly use the job scheduler and the SQLite ingest database.
Structural detail lives in the repository, where it is useful to whoever is reading the code at two in the morning.
Python 3.10 or newer. A CUDA-capable GPU if you have one — the analysis steps run roughly 25× faster with it and perfectly well without. RawTherapee and ImageMagick for the render pass; ExifTool if you want proper white balance and sidecars.
An account, a licence key, a connection, or any of your photographs leaving the building.
Free and open source, forever. If your own machine is not enough for a job, rent compute at cost instead — never a photo credit. That is the service.
A good edit is not approved by the model that made it.
What you accept or reject while culling is written back into the project as your decision, and the next pass starts from that. The star you gave a frame on Tuesday is the reason a frame like it is treated differently on Thursday — and no model gets to overrule the photographer, because the photographer keeps the record.