openphoto
Free, open-source Photoshop alternative for Mac: Photoshop's layout, menus, shortcuts and dialogs, measured point by point. Opens and saves layered PSD. Written in Rust.
Install / Use
claude mcp add yuanzhixiang -- npx -y github:yuanzhixiang/openphotoIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of openphoto
openphoto scores 81/100 on our quality scale, 3465th of 4,588 Development & Engineering skills we index.
Its MCP Server is 11 KB long, well organised into 11 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so openphoto is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-10-08. Automated pattern scan on 2026-10-08. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
openphoto compared with similar skills
All 4 of these similar skills score higher than openphoto; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| openphoto (this skill)by yuanzhixiang | 81 | 3 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 93.2k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.6k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.3k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 45.2k | 2d ago | CLAUDE.md |
Frequently asked questions
- How do I install openphoto?
- Run
claude mcp add yuanzhixiang -- npx -y github:yuanzhixiang/openphoto. The install tabs above show the steps for each supported agent. - Which AI agents does openphoto work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is openphoto safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is Apache-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is openphoto still maintained?
- The repository was last updated today, so openphoto is actively maintained.
Skill content
View source on GitHubOpenPhoto
A free, open-source Photoshop alternative for Mac that works the way Photoshop does — written in Rust.
The same layout, menus, shortcuts and dialogs as Photoshop 2026, measured point by point,<br> with image algorithms calibrated against Photoshop's own output.
openphoto.si · Download · English · 简体中文
<img src="docs/images/hero.png" alt="OpenPhoto editing a layered Photoshop document" width="100%"> </div>Why OpenPhoto
Millions of people have years of Photoshop in their hands: where every panel is, what every shortcut does, how each dialog responds. OpenPhoto aims to be a free editor where all of that carries over unchanged.
- Pixel-faithful interface. Windows, panels, option bars and dialogs are measured from a running Photoshop 2026 at 1:1 and compared side by side, down to field sizes, slider scales and font tracking.
- Your muscle memory works. Menus, item order and default shortcuts match Photoshop. Dialogs remember what Photoshop remembers and forget what it forgets.
- Calibrated algorithms. Adjustments and filters are fitted to Photoshop's own output using probe images: kernel by kernel, lookup table by lookup table. Fixtures captured from Photoshop are checked into the repository and tested on every change.
- Native and fast. Pure Rust with a GPU-composited canvas (wgpu), tiled copy-on-write pixel storage and no runtime dependencies.
Features
OpenPhoto is in early development. What is listed here works today; the roadmap covers what is still missing.
Interface
- Every tool's options bar, the toolbar icons, the Properties panel and the dialogs laid out at positions measured on Photoshop 2026, most within 1 pt
- Photoshop 2026's New Document dialog with its preset categories, recent and saved presets
Documents and files
- Opens and saves layered PSD files (layers, groups, blend modes, opacity and fill, masks, locks, links, color labels), checked field by field against files saved by Photoshop
- Opens PNG, JPEG, WebP, TIFF, BMP and GIF; exports PNG and JPEG
- Tabbed documents, unlimited undo with a History panel, drag and drop to open
Layers
- All 27 Photoshop blend modes, opacity and fill opacity, layer groups with pass-through
- Layer masks, five kinds of locks, linking, color labels, merging and flattening
- Multi-selection, drag to reorder, align and distribute
Selection and transformation
- Rectangular, elliptical, single-row and single-column marquees, lasso, polygonal lasso and magic wand
- Select › Modify (border, smooth, expand, contract, feather), Transform Selection
- Free Transform with skew, distort, perspective and warp; Image Size, Canvas Size, rotation, Crop with Photoshop's overlays and straightening
Painting and retouching
- Brush, pencil, eraser, gradient, paint bucket, clone stamp and history brush
- Blur, sharpen, dodge, burn and sponge; shapes and type; eyedropper with Photoshop's Color Picker
Adjustments — every dialog rebuilt after Photoshop 2026
Levels · Curves · Brightness/Contrast · Exposure · Vibrance · Hue/Saturation · Color Balance · Black & White · Photo Filter · Channel Mixer · Selective Color · Gradient Map · Threshold · Posterize · Invert · Desaturate · Equalize · Auto Tone / Contrast / Color
Filters — matched to Photoshop's output, most within one level
Gaussian Blur · Box Blur · Surface Blur · Motion Blur · Blur / Blur More · Unsharp Mask · Sharpen / More / Edges · Add Noise · Despeckle · Dust & Scratches · Median · Minimum · Maximum · High Pass · Offset · Custom · Mosaic · Fragment · Twirl · Pinch · Spherize · Polar Coordinates · Emboss · Find Edges · Solarize · Trace Contour · Wind
<table> <tr> <td width="50%"><img src="docs/images/huesat.png" alt="Hue/Saturation dialog"></td> <td width="50%"><img src="docs/images/gauss.png" alt="Gaussian Blur dialog with its preview"></td> </tr> <tr> <td align="center"><sub>Hue/Saturation</sub></td> <td align="center"><sub>Gaussian Blur, with its live preview</sub></td> </tr> <tr> <td colspan="2"><img src="docs/images/new-document.png" alt="New Document dialog"></td> </tr> <tr> <td colspan="2" align="center"><sub>New Document</sub></td> </tr> </table>Getting started
Download the signed and notarized app for macOS 11 or later (Apple Silicon and Intel) from Releases.
To build from source (OpenPhoto is developed and tested on macOS, where it uses the native menu bar):
git clone https://github.com/yuanzhixiang/openphoto.git
cd openphoto
cargo run --release -- path/to/image.psd
The Rust toolchain is pinned in rust-toolchain.toml and installed automatically by rustup. Without a file argument, OpenPhoto opens a blank document. Files can also be dropped onto the window.
Shortcuts
The default Photoshop shortcuts apply. A few of the most used:
| Action | Shortcut | |---|---| | New · Open · Save · Save As | ⌘N · ⌘O · ⌘S · ⇧⌘S | | Undo · Redo · Toggle last state | ⌘Z · ⇧⌘Z · ⌥⌘Z | | Free Transform | ⌘T | | Levels · Curves · Hue/Saturation | ⌘L · ⌘M · ⌘U | | New layer · Group · Merge down | ⇧⌘N · ⌘G · ⌘E | | Zoom in · Zoom out · Fit · 100% | ⌘= · ⌘- · ⌘0 · ⌘1 | | Tools | V M L W C I B S Y E G O T U H Z | | Default colors · Swap colors | D · X |
Architecture
OpenPhoto is a Cargo workspace. The document model knows nothing about the interface, so every editing operation can be tested without a window.
| Crate | Responsibility |
|---|---|
| op-core | Document model: layer tree, 256×256 tiled copy-on-write pixels, blend modes, selections, history, adjustments, filters, transforms, painting |
| op-render | wgpu canvas: zoom, mipmaps, checkerboard and pixel grid, embedded in egui through paint callbacks |
| op-io | File I/O: a dependency-free PSD reader and writer, plus bitmap formats through image |
| op-color | Color models and conversions |
| op-tools | Tool definitions and their shortcuts |
| op-ui | The egui interface: menus, option bar, toolbar, panels, dialogs and tool interaction |
| op-mcp | MCP server: every editing operation behind keyword search, over stdio |
| app | The executable |
MCP server
Agents can edit images through op-mcp, an MCP server speaking JSON-RPC 2.0 over stdio. It calls the same op-core / op-io functions as the interface, so results match the application exactly.
The server ships inside the app: once OpenPhoto.app is in Applications, point your MCP client at /Applications/OpenPhoto.app/Contents/MacOS/op-mcp. With Claude Code:
claude mcp add openphoto /Applications/OpenPhoto.app/Contents/MacOS/op-mcp
Other clients (Claude Desktop, Cursor and the like) take the same path in their configuration:
{ "mcpServers": { "openphoto": { "command": "/Applications/OpenPhoto.app/Contents/MacOS/op-mcp" } } }
From a source checkout, run it with cargo run --quiet -p op-mcp instead.
Instead of exposing every operation as its own tool, the server exposes exactly two:
| Tool | Purpose |
|---|---|
| search_tools | Keyword search over ~100 operations (adjustments, filters, layers, selections, canvas, painting, history); returns matching names with their full input schemas |
| call_tool | Run one operation by name with arguments |
The workflow is discover-then-run: search_tools with {"query": "gaussian blur"} returns filter_gaussian_blur with its schema, and call_tool with {"name": "filter_gaussian_blur", "arguments": {"radius": 2.0}} applies it. Documents stay open in the server between calls: open_image or new_document first, then edit, then export_composite or save_image (.psd keeps the layers). cargo test -p op-mcp covers search scoring and an edit round-trip through the protocol.
Testing
cargo test --workspace
About 350 tests guard both halves of the goal:
- Photoshop parity. Fixtures in
crates/op-core/fixtureshold Photoshop 2026's output for a probe image under each adjustment and filter. Tests fail if a result drifts by more than the tolerance it was measured to meet, usually one level. - Interface behavior. UI tests drive the real application headlessly through
egui_kittest: open a dialog from the menu, type into fields, press Enter, and check the document and its history.
Roadmap
Major areas that are not there yet, roughly in priority order:
- Pixel calibration of the remaining panels and dialogs
- More tools: brush presets and pressure, healing brushes, quick selection, magnetic lasso
- Remaining adjustments and filters: Shadows/Highlights, Replace Color, Smart Sharpen, Render, Distort
- Editable type and vector shapes, layer styles, adjustment and fill layers
- Channels and Paths panels, snapping, smart guides
- Color modes beyond 8-bit RGB, ICC color management
- Smart objects, actions and automation
Contributing
Issues and pull requests are welcome. The guiding rule for any change is simple: a running Photoshop 2026 is the reference. If OpenPhoto looks or behaves differently from it, that is a bug. Please run cargo fmt, cargo clippy --workspace --all-targets and cargo test --workspace before sending a pull request, and add a test for any behavior you change.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Third-party assets: the interface font is Source Sans 3 (SIL Open Font License, see OFL.txt); icons come from Phosphor Icons (MIT).
<sub>OpenPhoto is an independent project. It is not affiliated with, endorsed by or sponsored by Adobe Inc. Adobe and Photoshop are trademarks of Adobe Inc., used here only to describe compatibility.</sub>
Related Skills
Agent-Reach
93.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.3kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
ai-job-search
45.2kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
