Photu – a shell pipe CLI for batch image processing, built on libvips
Shell pipes build a JSON plan executed once by libvips, skipping intermediate files.

Beats XnConvert benchmarks with a custom C++ pipeline and zero telemetry.
Photographers, designers, developers
XnConvert · ImageMagick · Bulk Image Processor
It's a native desktop app built with C++23, Skia for rendering, libvips for image processing and my own cross-platform UI toolkit - no Electron/Qt.
It allows building reusable pipelines: resize, convert, compress, watermark, sharpen, blur, rotate, flip, rename, and metadata (EXIF/IPTC/XMP) editing, chained in any order and saved for reuse. Batches run in parallel.
Everything is local — no uploads, no signups/account, no telemetry, no network calls during processing.
It's currently in public beta (as mentioned, no signups or accounts needed - can just download), for Windows and Linux (Wayland only). Waiting for the Apple certificate to sign the macOS dmg installer, at which point I'll post the download link for macOS.
Business model: free beta now, one I've received enough feedback and the tool is mature enough - a one-time license per major version once it's out of beta. There won't be any subscriptions or telemetry ever.
Would love to get your feedback, especially on missing formats/operations (e.g. RAW file formats, watch folders, a CLI) to drive the roadmap to the first official version.
Cheers.
Shell pipes build a JSON plan executed once by libvips, skipping intermediate files.
Node-based image filtering running entirely locally in the browser.
Multi-pass review workflow with XMP-to-Hald CLUT profile conversion.
Vibe-coded in 2 hours with AI tokens — clever but feels like a weekend experiment.
Path-first image management is the neat idea here: you can reference semantic URLs like /assets/user/123/profile instead of juggling opaque IDs. The project pairs Ktor non-blocking IO with libvips for fast processing and exposes features you actually care about — on-demand vs eager variant generation, LQIPs, redirect templating and cache control — all Dockerized with docs and an image on GHCR. It isn't reinventing the wheel (Thumbor, Imgproxy and others exist), but it's a competent, usable open-source alternative for teams who want to self-host.
Client-side image processing when Photopea and Squoosh already dominate this space.