open-source · Rust · MIT

pre-alpha — движок, CLI и MCP-сервер уже работают

claws + draws · чудовищно быстрый редактор изображений для разработчиков, написан на Rust

Craws — это редактор пайплайнов: упорядоченная цепочка параметризованных операций поверх тайлового движка с content-hash кэшем и линейным светом. Управляй им из этого GUI, из headless-CLI, из CI или AI-агентом по MCP.

★ GitHub
fig.01 — pipeline.json · live
craws — IMG_2153.webp — 720×1080 @ 100%
decode
resize
exposure
crop
grayscale
draw
export
craws sample — a warm café portrait
open_imagerecompute 48/48

propertiesopen_image

source
IMG_2153.webp
size
720×1080
color
sRGB → linear f32
tiles
256² · premultiplied

histogram

luminance · RGB

02 доказательства, а не вайб

Заявления о скорости — это цифры, а не прилагательные.

Каждый столбик — это criterion-бенч на фото в 24 мегапикселя, release-сборка. Когда craws обзавёлся собственным ресемплером и SIMD-энкодером — сдвинулись именно эти числа.

resize · 6000→1920 · lanczos3 faster
было
323 ms
стало
54 ms
encode · jpeg q90 · 24MP2.4× faster
было
910 ms
стало
375 ms
4-step chain · slider tweak faster
было
85 ms
стало
11.8 ms
exposure · 24MP · cached580× faster
было
49 ms
стало
85µs

замерено · 6000×4000 · одна машина — контракт BLAZING

03 инструментарий

Десять операций. Один JSON.

Каждая операция — одна строка в пайплайне: собираемо, версионируемо, воспроизводимо. Один и тот же пайплайн на одном входе даёт побитово одинаковые пиксели.

resize

Ресемплинг

resample
{ "op": "resize", "width": 1600, "filter": "lanczos3" }

Собственный сепарабельный ресемплер — в 6× быстрее крейта, который он заменил, без гамма-протечек и тёмной каймы. Одну сторону можно оставить пропорциональной.

04 content-hash кэш

Меняешь один узел — пересчитывается один узел.

Каждый шаг — узел, ключуемый blake3-хэшем своих входов и параметров. Поменяй значение — и кэш сам вычисляет, какие именно тайлы каких узлов надо прогнать заново, а всё выше по цепочке отдаётся прямо из памяти.

decode

#d18a6

recompute

resize

#d1fd0

recompute

exposure

#c1052

recompute

crop

#e20fa

recompute

grayscale

#384ed

recompute

draw

#e217d

recompute

export

#d1929

recompute

[COLD RUN]

холодный прогон — каждый узел считает каждый тайл с нуля

recompute cache hit

05 один движок, четыре порта

Движку всё равно, кто его зовёт.

domain ← engine; кодеки, GPU и AI — адаптеры за трейтами; CLI, MCP-сервер и GUI — равноправные порты и ничего не знают друг о друге.

craws-engine

tiled · content-hash cache · linear f32 · rayon

domaincodecsgpuai
craws-app

GUI

Вьюпорт на Tauri 2 + React. Пан и зум — на GPU; ползунок превьюится во фрагментном шейдере, так что мост простаивает — замерено 165 fps, в 21× быстрее наивного round-trip.

craws

CLI

craws run pipeline.json — headless, скриптуемо, детерминированно. Формат следует за расширением файла; отчёт по таймингам — за каждым прогоном.

без GPU

CI

CPU-путь есть всегда. Ставь craws в пайплайн и обрабатывай пачками на раннере — побитово одинаковый вывод безопасно диффать.

craws-mcp

MCP

13 инструментов по stdio. Агент открывает изображение, аннотирует, экспортирует — автоматические фигуры для документации, киллер-фича.

🦀🎨

Один движок. Все порты. Никаких прилагательных без цифры.

Craws под MIT, pre-alpha — и уже blazing. Заявления о скорости — это criterion-бенчи, прогони их сам.

❯ git clone craws

Craws 🦀🎨 · claws + draws · собран на Rust: тайлы, blake3 и линейный свет

github.com/Aver005/craws · MIT

0%
[warm]