-
Notifications
You must be signed in to change notification settings - Fork 5
Home
|
Local AI layers, inside Photoshop | |
| Developer | Mehran Ahmadi |
| Initial release | 22 June 2026v0.1.8-alpha
|
| Latest release |
v0.20.0-alpha30 August 2026 |
| Repository | MehranMarxian/OpenLayer |
| Written in | TypeScript |
| Platform | Adobe Photoshop 2024+ (UXP) |
| Operating system | Windows 11 (verified) macOS untested |
| Backend | ComfyUI, run locally |
| Type | Raster graphics editor plugin Generative image synthesis |
| License | MIT |
| Website | mehran-ahmadi.com/OpenLayer |
OpenLayer is a free and open-source Adobe Photoshop plugin that connects the application to a locally running ComfyUI server, allowing generative image synthesis to be performed on the user's own hardware and returned into the open document as ordinary, editable Photoshop layers.[1]
It is distinguished from cloud-based generative tools by three design commitments: it performs no
network transmission beyond 127.0.0.1, it requires no account or subscription, and it delivers
results as named, positioned, maskable layers rather than as flattened images.[2]
The project's most unusual capability, Unflatten, decomposes a single flat image into multiple
separated layers with real alpha channels — a result its author describes as worth "very little in a
web UI", and the reason the tool is built as a host-application plugin rather than a web
interface.[3]
As of v0.20.0-alpha the software is in public alpha, described by its author as "a public testing
checkpoint, not production software".
This wiki is maintained alongside the project. The README is the canonical source for installation and requirements; where the two disagree, the README is correct.
- Overview
- History
- Features
- Architecture
- Models and hardware
- Agent bridge
- Limitations
- Development
- See also
- References
OpenLayer is implemented as an Adobe UXP panel, the plugin architecture that succeeded Photoshop's older CEP extensions. The panel does not itself perform inference. It captures pixels from the active document through Photoshop's Imaging API, submits a prepared workflow graph to a ComfyUI server over HTTP, polls for the result, and imports the returned image as a new layer.[4]
All computation occurs on the user's machine. The plugin's manifest requests filesystem and network permissions solely for temporary files, Photoshop import tokens, and communication with a local server; the project states that no images, prompts, model names, or diagnostics are transmitted automatically, and that the software contains no telemetry.[2]
The project targets consumer hardware, explicitly a graphics card with 12 GB of video memory. That constraint has shaped its contents: full-precision model presets that could not run within it were removed rather than left disabled, on the stated principle that "every preset the panel lists is one you can actually run".[5]
OpenLayer's first public preview, v0.1.8-alpha, was released on 22 June 2026 as a minimal
text-to-image bridge. Development proceeded in roughly weekly alpha releases, each documented in a
detailed changelog.
| Release | Date | Principal development |
|---|---|---|
v0.1.8-alpha |
Jun 2026 | First public MVP; text-to-image and layer import |
v0.2.0–v0.4.1
|
Jun 2026 | Image-to-image; sketch-to-image via ControlNet; selection-aware inpainting |
v0.6.0-alpha |
Jul 2026 | Interface release; compact dashboard designed for narrow Photoshop panels |
v0.9.0-alpha |
Jul 2026 | Layer Tools — the first tool that is not a generation |
v0.10.0-alpha |
Jul 2026 | Release archives rebuilt to the ZIP specification, correcting a defect that had made every prior release unusable on macOS |
v0.11.0-alpha |
Aug 2026 | Setup screen, listing every required model and node package with installation status |
v0.13.0-alpha |
Aug 2026 | Optional LoRA support across eleven presets; in-panel model downloading |
v0.14.0-alpha |
Aug 2026 | Modern sketch-to-image presets using Z-Image Fun ControlNet |
v0.15.0-alpha |
Aug 2026 | Agent Bridge (Model Context Protocol); FLUX.2 Klein 4B presets |
v0.16.0-alpha |
Aug 2026 | Artist-Friendly Dark theme; slider controls; Klein-based inpainting |
v0.18.0-alpha |
Aug 2026 | Prompt Wallet; Style Reference |
v0.19.0-alpha |
Aug 2026 | Multi-Reference composition |
v0.20.0-alpha |
Aug 2026 | Unflatten — decomposition of a flat image into separate layers |
A recurring practice in the project is the gate: before a major feature is built, its central assumptions are tested with live generations and the results recorded. The Multi-Reference gate ran 48 generations and the Unflatten gate answered eight questions; in both cases the findings overturned assumptions in the original plan and reduced the scope of what shipped.[3][6]
The panel presents eleven generation tools alongside utility and preference screens.
| Tool | Function |
|---|---|
| Text to Image | Generates a new layer from a text prompt |
| Image to Image | Uses the active layer as visual input |
| Sketch to Image | Conditions generation on line art through ControlNet |
| Inpaint | Repaints a Photoshop selection in place |
| Outpaint | Extends canvas content beyond its original edges |
| Upscale | Enlarges a layer using a pixel/model upscaler |
| Prompt from Layer | Produces descriptive prompt text from an image (Florence-2) |
| Unflatten | Separates one flat layer into several layers with alpha |
| Live Painting | Regenerates continuously as the user paints |
| Style Reference | Transfers palette and mood from a reference layer |
| Multi-Reference | Composes a single image from several captured layers |
| Layer Tools | Exports layers, selections and masks; requires no models |
Supporting screens include History (previous generations with their parameters), Prompt Wallet (a shared library of saved prompt pairs), Setup (model and node requirements checked against the running server), and Settings.
Three visual themes are offered: Compact Adobe Dark, the default; Artist-Friendly Dark, a softer palette intended to sit behind artwork rather than match the application chrome, in which numeric parameters are rendered as sliders; and Classic v0.4.
The plugin is written in TypeScript across approximately 90 source files and built with
Vite into a UXP plugin package. Generation behaviour is declared in a preset
registry, which as of v0.20.0-alpha defines 26 runnable presets.[5]
Each preset names an API-format ComfyUI graph, an editable GUI-format counterpart, the node classes it requires, and the model files those nodes load. An automated check compares each graph with its editable twin to prevent the two from diverging. The registry is the single source from which the Setup screen, the offline setup pack, and the Workflow Health report are all generated — the project's stated rule being that restating a model name or folder downstream "is how a setup guide drifts from the software it describes".[5]
Distribution is as an Adobe .ccx package, installable by double-click through the Creative Cloud
desktop application. Because the plugin is neither signed nor distributed through Adobe Exchange,
Creative Cloud presents an unverified-publisher prompt during installation.
OpenLayer ships no model weights. Users install them into ComfyUI themselves, and the panel reports which are present, which are missing, and which are in the wrong folder.
Presets are organised around four principal model stacks. Because several presets share files — the
8 GB qwen_3_4b text encoder is read by nine presets across four tools — the deduplicated total for
every preset, approximately 177 GB, is far smaller than the sum of the presets taken
individually.[5]
| Stack | Approx. size | Licence |
|---|---|---|
| FLUX.2 Klein 4B | 12.5 GB | Apache-2.0 |
| Z_image_Turbo | 20.7 GB | ungated |
| Krea-2 Turbo | 18.6 GB | ungated |
| Flux Fill | 34.2 GB | non-commercial |
The FLUX.2 Klein stack is the project's recommended starting point, enabling five tools for 12.5 GB and generating a 1024×1024 image in approximately twelve seconds on an NVIDIA RTX 4070 Ti at four sampling steps.[7]
See Choosing a Model and Hardware and Performance.
Since v0.15.0-alpha, OpenLayer's tools can be operated by a language-model client through the
Model Context Protocol. All ten generation tools are exposed. The
bridge is disabled by default and is distributed in the source repository rather than in the plugin
package, because a Photoshop plugin package cannot install or start a Node.js process.
Architecturally the bridge contains no Photoshop or ComfyUI logic. Its only operations are to request that the panel run a tool it already possesses, and to read back the reported outcome. Consequently an agent-initiated generation and a user-initiated one traverse identical code, and the same safety constraints — document binding, transactional import, and a single-run lockout — apply to both.[8]
The project documents its boundaries explicitly rather than implicitly. Notable among them:
- Unflatten requires a subject positioned in front of a background. An image filling the frame has no foreground and background to separate, and is returned unchanged. Testing established that composition, rather than whether the image was photographed or generated, determines the outcome. The decomposition runs at 640 pixels, a measured optimum at which separation is better than at 1024.[3]
- Multi-Reference does not preserve facial likeness. Clothing, props, setting and lighting transfer from a reference image; a specific person's face returns as a plausible stranger. This was established across 48 test generations and is stated in the interface itself.[6]
- macOS is unverified. No confirmed end-to-end installation has been reported.
- Inpainting, outpainting, Unflatten and Multi-Reference are marked experimental.
A full account is maintained in what works and what does not.
The repository maintains an automated test suite — 1,022 tests across 101 files as of
v0.20.0-alpha — covering workflow validity, settings, model compatibility and error handling.
Continuous integration runs type checking, linting and the tests; Photoshop, UXP and ComfyUI
integration testing remains manual.
A dedicated test enforces version consistency across the seven locations the version number occupies, added after two releases shipped with a stale version displayed in the panel.[9]
Testing reports are welcomed, particularly from macOS users, through Discussions and Issues.
- Choosing a Model — which stack to download first
- Hardware and Performance — VRAM tiers and measured timings
- FAQ — common questions
- ComfyUI — the inference backend
- Adobe UXP — the plugin platform
- OpenLayer README — project overview and tool list.
- Privacy — statement of local-only operation.
-
docs/unflatten-gate-findings.md— pre-build investigation of layered decomposition. -
docs/workflow-notes.md— capture, submission and import path. -
src/comfy/presetRegistry.tsandsrc/comfy/setupManifest.ts— preset and requirement definitions. -
docs/multi-reference-gate-findings.md— 48-generation likeness investigation. -
CHANGELOG,
v0.15.0-alpha— FLUX.2 Klein timings. -
docs/mcp-bridge.md— bridge design. -
tests/scripts/versionConsistency.test.ts— version-drift enforcement.
OpenLayer™ — the name and logo may not be used by derivative works without permission. Software licensed under the MIT License.