mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
一個開源、乾淨房間重新實作的 Adobe Photoshop,使用純 Rust。
AI 翻譯
An open-source, clean-room reimplementation of Adobe Photoshop in pure Rust
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗[!NOTE] ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.
Every screenshot here is the real app at work on public-domain art, rendered offscreen through its control channel.
PhotoCraft's PSD support is a standalone crate written from Adobe's public specification and tested against a corpus of real-world files.
crates/io/tests/it/corpus.rs; fetch the psd-tools set with cargo xtask corpus --psd-tools), and anything we don't model yet (raw blocks, descriptors, extras) is carried over instead of being dropped. A re-saved file is not byte-identical to its source: PhotoCraft rewrites image resources, layer records and the composite. Only the standalone photocraft-psd crate, parsing and writing a file without the document model, reproduces every parseable corpus file byte for byte (crates/psd/tests/it/corpus.rs).Every menu item, tool and dialog runs a command from one registry of 500+ commands. The UI, the CLI, the JSON control channel and the MCP server all call the same commands, so anything you can click, a script or an AI agent can do too.
# Headless: open, edit, save
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
# Apply one action list to a folder of images
photocraft-cli batch --actions grade.json --in ./raw --out ./graded
# Every subcommand explains itself
photocraft-cli batch --help
# Let an agent drive it over MCP (headless, or bridged to the running app)
photocraft-cli mcp
The desktop app also offers an authenticated, loopback-only control channel (photocraft --control) for inspecting UI state, driving tools with pointer events, and taking offscreen screenshots. Every image in this README was rendered that way. See docs/control-protocol.md.
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
Japanese fonts for the UI and Type tool come from craft-fonts, an optional build input (desktop release builds always include it). Without it PhotoCraft uses your system's CJK fonts:
git clone https://github.com/storytold/craft-fonts ../craft-fonts
CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p photocraft
New contributors and AI agents: start with AGENTS.md, then docs/.
Installers for macOS, Windows, Linux, FreeBSD and the web are attached to each GitHub release. On Linux you can pick an AppImage, a .deb, an .rpm, a tarball or a Flatpak bundle. The bundle needs the freedesktop runtime from Flathub, which flatpak offers to install along with it:
flatpak install --user photocraft-<version>-linux-x86_64.flatpak # or -linux-aarch64
flatpak run ai.storyteller.photocraft
The Flatpak prints through the host's CUPS socket (File › Print talks IPP to it directly, no lp needed); without CUPS, or without a printer, File › Print opens the system print dialog through the print portal. See printing.
The AppImage needs no install: the first run registers its launcher icon and menu entry in ~/.local/share so the dock shows PhotoCraft's icon on Wayland. Set PHOTOCRAFT_NO_DESKTOP_INTEGRATION=1 to skip that, and see docs/releasing.md › Linux to undo it.
On a Wayland session, files dropped on the window don't open yet: winit 0.30, the windowing library under egui, has no Wayland drag and drop (#386). Use File › Open, or copy the image in your file manager and paste it with Ctrl+V. To drag and drop, start PhotoCraft under XWayland: WAYLAND_DISPLAY= photocraft, WAYLAND_DISPLAY= ./photocraft-<version>-linux-x86_64.AppImage, or flatpak run --nosocket=wayland --socket=x11 ai.storyteller.photocraft. On Wayland, PhotoCraft shows the command for your install in a notice until you dismiss it. Preferences › Performance › Linux display server = X11 does the same on every launch. With a fractional display scale (125%, 150%, 175%) an XWayland window is drawn at a lower resolution and enlarged by the compositor, so the interface is blurred there; native Wayland stays sharp (#1072).
On macOS, the command-line tool comes as photocraft-cli-<version>-macos-universal.zip. The binary is signed with the same Developer ID as the app and notarized by Apple. A bare binary can't carry a stapled notarization ticket the way the DMG does, so the first time you run it macOS checks the notarization online. You can confirm it yourself:
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
On FreeBSD 14 (x86_64), the release has a tarball laid out like /usr/local. Install the runtime libraries, then unpack it there:
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
Maintainers: docs/releasing.md explains how releases are built, signed and published.
[!IMPORTANT] Status: PhotoCraft is in early alpha, and we want to be straight about where it stands: much of Photoshop's feature surface exists in some form, but it is not yet a Photoshop replacement for daily professional work. The biggest gaps are AI/generative features, 15 missing tools, depth in typography and pro workflows, and plug-in compatibility. Every Photoshop menu item is wired to a command (
docs/parity-checklist.md), but that measures wiring, not behaviour. The honest, dimension-by-dimension picture and where we're going next are in the roadmap and parity assessment. Expect rough edges, and please file issues (include your OS, document size, layer count and a screenshot). You can also tell us what broke on Discord.
These installers are maintained by community members, not by the PhotoCraft team.
On Gentoo, the ::snakebyte overlay packages the Linux release as media-gfx/photocraft-bin:
eselect repository add snakebyte git https://github.com/switch87/snakebyte-overlay.git
emaint sync -r snakebyte
echo 'media-gfx/photocraft-bin ~amd64' >> /etc/portage/package.accept_keywords/photocraft
emerge --ask media-gfx/photocraft-bin
Developer, architecture, automation, format, and security documentation is maintained in the PhotoCraft documentation book.
To self-host the browser version with Docker, see Docker web hosting.
Security architecture, threat modeling, parser hardening, fuzzing, and vulnerability reporting are covered in the security documentation and the repository security policy.
PhotoCraft is tested against real files: our own Photoshop-authored oracle PSDs in
photocraft-corpus plus the psd-tools, ag-psd and PngSuite sets, pinned and
sha256-verified. Fetch them with cargo xtask corpus --all and run the tests with
cargo xtask test-corpus (details in docs/development.md).
New to PhotoCraft? Download it from the PhotoCraft page on getartcraft.com. That's the easiest way to install it.
Want a specific build or format? On GitHub, the latest release has every build listed below, and all releases have earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.
| Build | Installer | Portable |
|---|---|---|
| x64 (64-bit Intel/AMD) | photocraft-<ver>-windows-x64.msi | photocraft-<ver>-windows-x64-portable.zip |
| arm64 (Snapdragon and other ARM PCs) | photocraft-<ver>-windows-arm64.msi | photocraft-<ver>-windows-arm64-portable.zip |
| x86 (32-bit) | photocraft-<ver>-windows-x86.msi | photocraft-<ver>-windows-x86-portable.zip |
Installers and executables are code-signed.
| Build | File | Notes |
|---|---|---|
| App, universal (Apple silicon + Intel) | photocraft-<ver>-macos-universal.dmg | Signed and notarized |
| Command-line tool, universal | photocraft-cli-<ver>-macos-universal.zip | Signed and notarized |
| Format | x86_64 | aarch64 (ARM64) | Notes |
|---|---|---|---|
| AppImage | photocraft-<ver>-linux-x86_64.AppImage | photocraft-<ver>-linux-aarch64.AppImage | Runs anywhere; updates itself with AppImageUpdate (.zsync files) |
| Flatpak | photocraft-<ver>-linux-x86_64.flatpak | photocraft-<ver>-linux-aarch64.flatpak | Sandboxed; flatpak install --user <file> |
| Debian/Ubuntu | photocraft-<ver>-linux-x86_64.deb | photocraft-<ver>-linux-aarch64.deb | |
| Fedora/RHEL/openSUSE | photocraft-<ver>-linux-x86_64.rpm | photocraft-<ver>-linux-aarch64.rpm | |
| Tarball | photocraft-<ver>-linux-x86_64.tar.gz | photocraft-<ver>-linux-aarch64.tar.gz | Unpack anywhere |
RISC-V (riscv64): photocraft-<ver>-linux-riscv64.tar.gz only, built against Ubuntu 24.04 (needs glibc 2.39+).
| Build | File |
|---|---|
| x86_64 | photocraft-<ver>-freebsd-x86_64.tar.gz |
| Build | File | Notes |
|---|---|---|
| Static site | photocraft-web-<ver>.zip | Runs in a modern browser; host it on any static server |
PhotoCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.
| App | What it's for | Code | Learn more | |
|---|---|---|---|---|
| PhotoCraft | Image editing: layers, masks, type and real PSD files · you are here | GitHub | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PdfCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website |
And ArtCraft itself, our AI image and video studio for artists who want real control.
The Crafting Apps share the same conventions: clean-room and pure Rust, native on macOS, Windows and Linux, in the browser via WebAssembly, and fully drivable by agents.
PhotoCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the PhotoCraft contributors. Required notices are in NOTICE.
Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.
Every artwork shown is in the public domain (Wikimedia Commons, NASA, U.S. National Archives); sources are listed in docs/images/SOURCES.md.
The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the
ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as
part of this repository and PhotoCraft, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. PhotoCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.
| DesignCraft | Page layout and publishing | GitHub | Website |