Personal · Open Source
C-Shop — a GPU-native image editor
A native, layer-based image editor written from scratch in Rust. No browser, no Electron,
no web view — a Vulkan compositor and a real desktop binary that needs nothing beyond
a working GPU driver. The same editor runs with no window at all, driven by a script
instead of a pointer, and serves that harness over the network, so a caller elsewhere can
edit an image and see what it drew.
- ~55,000 lines of Rust and 500 of WGSL across five crates — document model, GPU compositor, I/O, interface and app shell
- An agentic harness: the whole editor scripted headlessly, so a caller that cannot see a canvas still places type by measurement and reads back a report of exactly what it drew — served over MCP with a picture of the work in every result, the document held open between calls, and each path confined to a single workspace
- Layers, groups, masks, re-editable type, Bézier paths and vector shapes with boolean operations, layer effects, 27 blend modes and non-destructive adjustment layers
- 30 filters and a full selection stack, all evaluated on the GPU and checked against a CPU reference to within 0.84 of one 8-bit level
- Seventeen named styles — parameterised script fragments that scale themselves to whatever image they are handed — and an optional vision pack that takes a photograph to a cut-out without anyone having to say where anything is
- A native layered project format that reopens fully editable, plus PSD import and export and the usual flat formats, with ICC profiles read out of the containers directly, CMYK opened as four inks through the press's own profile, and 16-bit export that keeps the precision the compositor already computes
- 733 tests, including GPU-versus-CPU pixel comparison, headless interface driving, fuzzed round trips of damaged files and the served editor exercised over a real socket