03October 2025 to March 2026GitHub ↗
ctximg
Photo search that runs entirely offline

Every image and every plain English query lands in one CLIP vector space and ranks by cosine similarity. No tags, no filenames, no filters. You describe what you remember and it finds the photo.
- Period
- October 2025 to March 2026
- Stack
- Python, PyTorch, OpenCLIP, SigLIP 2, FastAPI, SQLite, NumPy
What it took
100/simages embedded per second, fastest tier
100, 49 and 32 images a second across three accuracy tiers, from 768-d at 224px up to SigLIP 2 at 1152-d and 384px, on a 6 GB RTX 3060. fp16 inference gave a 3× speedup, batch size scales to free VRAM, and a CUDA out of memory error recovers by splitting the batch.
1 batchis all an interrupt costs
Indexing is incremental and crash safe: SQLite WAL with per batch commits, change detection on path, size and mtime, and threaded JPEG decode overlapped with GPU encode across 10 formats including HEIC.
203pytest tests, green in 13 seconds
It ships as a tray resident FastAPI desktop app with 19 REST endpoints, a dependency free browser UI and an 11 command CLI.
Measured
Images embedded per second
ctximg's three accuracy tiers on a 6 GB RTX 3060, timed by the app itself. Higher is better.
768-d at 224px
Middle tier
SigLIP 2, 1152-d at 384px