Photoshop's layer logic, finally applied to Stable Diffusion
A web UI that treats diffusion models as non-destructive layers you can rearrange, replay, and share as JSON.

What it does
Opendream is a web interface for Stable Diffusion built around layers and non-destructive editing. Each generation or edit becomes a layer; delete one and everything built on top of it goes too, keeping the dependency chain clean. Workflows save as portable JSON files you can reopen or hand to collaborators.
The interesting bit
The extension system is deliberately low-ceremony: write a Python function with type hints and a @opendream.define_op decorator, drop it in a folder, and the backend auto-generates frontend form fields from your annotations. The README shows swapping the default dream operation for DALL-E or a serverless endpoint as a one-file gist.
Key highlights
- Core primitives are
dream(txt2img) andmask_and_inpaint; everything else is an extension - Bundled extensions include ControlNet (Canny, OpenPose), InstructPix2Pix, Segment Anything, and a DALL-E adapter
- Layer model guarantees deterministic replay: the canvas state is always derivable from its layer stack
- One-command startup via
run_opendream.sh(~30 seconds, Node required) - Born as a Stanford CS 348K course project
Caveats
- Extension dependencies are manual: you add packages to
requirements.txtyourself, and mismatches are your problem - The “seamlessly integrate” claim in the README is aspirational; actual integration friction depends on the extension
Verdict
Worth a spin if you treat image generation as iterative experimentation rather than one-shot prompts. Skip it if you just want fastest-possible generation and don’t care about revising earlier steps.