Cull Slashes Ai Image Sorting Time Without Cloud Dependencies

Cull is a single-machine curation engine that automatically scrapes, classifies, and sorts AI-generated images into organized folders. It runs entirely on your local hardware without needing Docker, Redis, or a database. The tool uses vision-language models to evaluate every image against a strict 17-field JSON schema, ensuring consistent output no matter which AI backend you connect.
Thomas Lennon who also released Bracket built this open-source tool to replace the tedious manual work of sorting through hundreds of AI-generated images by eye. Gallery-dl integration gives cull access to over 340 supported websites, including Pixiv, DeviantArt, Twitter, and various booru sites. The project fills a specific gap for dataset builders who need repeatable, automated curation without relying on cloud services or complex infrastructure.
Automated curation with built-in dashboard
- Scrapes from seven dedicated sources plus gallery-dl.
- Classifies images using local or cloud vision models.
- Strict JSON schema prevents inconsistent AI outputs.
- Auto-captions images that arrive without prompts.
- Per-source deduplication using content hash matching.
- Flask dashboard with gallery, stats, and filtering.
- Quality and relevance scoring with adjustable thresholds.
- ZIP export filtered results straight to your trainer.
This tool is aimed at ML engineers building LoRA or fine-tune datasets who want to automate image selection rather than doing it manually. Solo developers maintaining scraped archives across multiple sources will benefit from built-in deduplication that catches the same image appearing on different platforms. Photographers and artists can use it to run triage passes over generated drafts, quickly surfacing the best shots from hundreds of outputs.
Filesystem-first design with no external dependencies
The developer prioritized simplicity by using the filesystem as the queue, where atomic file renames act as cross-worker locks that recover cleanly from crashes on restart. Adding a new vision provider requires only a 30-line subclass, making the tool extensible without deep architectural knowledge. The project includes a Claude-style skill file so AI coding agents like Cursor or Aider can understand the codebase structure before making changes.
"Because the filesystem is already a queue. image.jpg.processing is the lock; os.rename is atomic on every platform that matters; the supervisor's stale-processing sweep recovers from crashes on restart." — Source: GitHub