Repo Year in Review

storytold/photocraft

PhotoCraft is an early-alpha, open-source, clean-room Rust reimplementation of Photoshop with layers, masks, adjustments, type, vectors, brushes and PSD support.

  • 35.3k GitHub stars
  • Rust
  • ⚖️ Apache-2.0
storytold/photocraft preview image

What it is

PhotoCraft is an open-source, clean-room reimplementation of Adobe Photoshop written in pure Rust, delivered as a native app with a CPU reference compositor and a wgpu GPU compositor. It supports layers, masks, adjustment layers, layer styles, type, vectors, a brush engine and layered PSD files. Every action is a command, so the same engine can be driven from the UI, a CLI, a JSON control channel or an MCP server. The project is in early alpha and is not yet a Photoshop replacement for daily professional work.

Who it's for

  • Photoshop users who want a familiar, open-source, offline image editor
  • Developers and AI-agent builders who want to script image editing through a CLI, JSON control channel or MCP server
  • Rust developers interested in a document model, command engine and compositor architecture
  • Contributors willing to test an early-alpha editor and file issues

Requirements

Requirements

  • Rust toolchain with cargo to build from source (git clone, cargo run)
  • Optional: craft-fonts checkout (CRAFT_FONTS_DIR) for bundled Japanese fonts in source builds
  • FreeBSD 14 (x86_64) runtime libraries installed via pkg for the FreeBSD tarball
  • Freedesktop runtime from Flathub for the Linux Flatpak bundle

Setup

  1. Build and run from source

    Clone the repository, then run the desktop app (optionally passing a PSD file) or the test suite.

    bash
    git clone https://github.com/storytold/photocraft
    cd photocraft
    cargo run --release -p photocraft -- image.psd   # the desktop app
    cargo test --workspace                           # the test suite
  2. Optional: build with Japanese fonts

    craft-fonts is an optional build input; without it PhotoCraft uses your system's CJK fonts.

    bash
    git clone https://github.com/storytold/craft-fonts ../craft-fonts
    CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p photocraft
  3. Install the Linux Flatpak bundle

    The bundle needs the freedesktop runtime from Flathub, which flatpak offers to install.

    bash
    flatpak install --user photocraft-<version>-linux-x86_64.flatpak   # or -linux-aarch64
    flatpak run ai.storyteller.photocraft
  4. Install on FreeBSD 14 (x86_64)

    Install the runtime libraries, then unpack the release tarball into /usr/local.

    bash
    pkg install libxkbcommon wayland libX11 libXcursor libXrandr libXi libxcb mesa-libs vulkan-loader gtk3 fontconfig freetype2 alsa-lib
    tar -xzf photocraft-<version>-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local
    photocraft

Examples

Headless open, edit, save

bash
bash
photocraft-cli run wave.psd \
  --cmd filter.sharpen.smartSharpen     --params '{"amount":80}' \
  --cmd layer.newAdjustmentLayer.curves --params '{"points":[[0,0],[64,48],[192,212],[255,255]]}' \
  --out wave-final.png

What it does: Opens a PSD, applies a Smart Sharpen filter and a Curves adjustment layer via registered commands, and writes a PNG.

Batch-apply an action list

bash
bash
photocraft-cli batch --actions grade.json --in ./raw --out ./graded

What it does: Applies one action list to every image in a folder and writes the results to another folder.

Drive PhotoCraft from an agent over MCP

bash
bash
photocraft-cli mcp

What it does: Starts the MCP server so an AI agent can call the same command registry, headless or bridged to the running app.

Verify the notarized macOS CLI

bash
bash
ditto -x -k photocraft-cli-<version>-macos-universal.zip .
spctl --assess --type install -vv photocraft-cli-<version>-macos-universal/photocraft-cli
# ... accepted, source=Notarized Developer ID

What it does: Unzips the macOS CLI and checks Apple's notarization status.

Pros & cons

Pros

  • Pro:Broad editing feature set: adjustment layers, layer styles, smart objects, 52 tools and a brush engine
  • Pro:Real PSD/PSB support, with re-saves preserving the render of 307 of 309 psd-tools test files
  • Pro:Every action is a command in a 500+ command registry, usable from the UI, CLI, JSON control channel or MCP server
  • Pro:Cross-platform with installers for macOS, Windows, Linux, FreeBSD and the web, plus MIT/Apache-2.0 licensing

Cons

  • Con:Early alpha; the README states it is not yet a Photoshop replacement for daily professional work
  • Con:Known gaps include AI/generative features, about twenty missing tools, typography and pro workflow depth, and plug-in compatibility
  • Con:Re-saved PSD files are not byte-identical to the source, and files dropped on a Wayland window don't open yet

Images