Find meaning in every photo.
prototype · WindowsSearch your own photographs by what is in them, on a laptop, with nothing leaving the machine.
Type "red car" and you get the red car — not the file named car.jpg, and not a cloud service's answer. A vision model has already looked at every photograph and written a paragraph about it, a segmenter has outlined what is in it, a detector has found the faces, and all of that is folded into one searchable vector. The only time it touches the network is the first-run model download, because you pressed a button.
Brand artwork for PixelFlux. The product is real and the code is linked above; the poster is a design exercise, not a claim.
Search runs over meaning, not filenames or tags. Nothing has to be labelled first.
Describe, segment, detect and embed run as a queue over hours rather than a button you wait on, and the result is cached forever.
Grouping is by appearance and is recomputed rather than stored. Only the names you type are treated as facts.
Browsing, analysis and search make no network requests at all, and the interface's content security policy forbids them.
Including the two libraries underneath it that are my own work — the framework the interface is written in, and the transport it talks over.
The problems worth describing, and what the measurement said. Not the technology list — that is above.
Blending the CLIP text embedding of the generated description with the image embedding, weighted 80/20 toward the image, took "red car" from 0.80 to 1.00 precision-at-five. Both extremes lose. The weight is part of the model version string, because otherwise changing it silently reuses the old vectors — which happened, and looked exactly like the change having no effect.
Face detection cost 114 ms a photograph, of which the network was under 10 ms; the rest was decoding a four-megapixel JPEG twice and discarding most of it. Decoding at the size the model actually wants took the face stage from 82 s to 25 s across the library, at a measured cost of 0.8% of detections.
Greedy decoding loops at the tail of a description; a penalty stops it and starts inventing specific strings — a sign, a box label, a name tag. For text that becomes a search index, a repeated sentence is harmless and an invented proper noun makes a photo findable by a word that is not in it. The decoder stops on a repeated sentence instead.
Figures taken from the repository itself. No line-of-code count — it rewards duplication and every reader knows it.
A prototype, and its README lists the limits without being asked: Windows only, arm64 is the tested target, the vision model is small and sometimes wrong, face grouping is appearance rather than identity, and there is no sync. The measurements are real and reproducible; the product around them is early.
These are personal projects, built on nights and weekends with AI agents in the loop — that is how one person ships this much surface area at once. Most of them are early: alpha or prototype, with polish that varies a lot by area. What is not early is the architecture, the test suites, and the measurements — every number on this page is counted from the repository and every claim is one you can check against the code.