Open-source project
chflame163/ComfyUI_LayerStyle avatar
chflame163/ComfyUI_LayerStyle

ComfyUI LayerStyle: half the nodes moved out, so a workflow now needs two repos

A set of nodes for ComfyUI that can composite layer and mask to achieve Photoshop like functionality.

3,176 stars207 forksPythonMIT

At a glance

What is it?
A node set that brings Photoshop style layering into ComfyUI, with model-driven nodes split into a companion repository. The practical consequences are a two repository install, a pinned rollback commit, and an error list that is almost entirely version conflicts.
Who is it for?
Use ComfyUI LayerStyle if you want layer and mask compositing inside ComfyUI rather than switching to an image editor, and if you are willing to manage two repositories instead of one. The style and masking nodes are the reason to install it, and the model-driven nodes are the reason it can break.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 19 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 5, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Nodes moved to a second repository, and workflows need both

The first thing the repository does is warn you about itself.

A set of nodes that are prone to problems has been split out into a companion repository, and the list is long: segmentation and matting nodes, object detectors, a bounding box mask joiner, a PSD loader, colour tone extraction, auto cropping in three versions, QR code creation and decoding, image to prompt converters, blind watermarking, and a set of prompt rewriting and tagging utilities.

The stated reason is stability, and the practical reason is that those nodes load models. Everything in that list needs a model file, a specific library version, or both, so each one is a separate way for the plugin to fail on somebody else's machine.

The consequence is stated in one line: if there are recent updates, you need to install the companion repository to ensure previous workflows do not lose nodes. A saved ComfyUI graph stores node type names, and the names have moved. So a working workflow from last month needs both packages installed today.

And there is a documented escape hatch. If the split breaks something, the instruction is to roll the plugin back to a specific commit, which in this repository means a hard reset to that hash in the plugin directory.

Install is four paths and two different Python interpreters

Installation is described for two ComfyUI distributions, because the two ship their Python in different places.

For the plugin itself there are three routes: the ComfyUI Manager is the recommended one, or clone the repository into the custom nodes directory, or download a zip, extract it and copy the resulting folder there.

The dependency step is where the two distributions diverge. The official portable package has a batch file you double click; the Aki package has its own batch file. If you would rather run it by hand, the official package's command walks up three directories to the embedded interpreter and installs from the requirements file, then runs a repair script:

code
..\..\..\python_embeded\python.exe -s -m pip install -r requirements.txt
.\repair_dependency.bat

The Aki package uses a different interpreter path and its own repair script. In both cases the sequence ends with restarting ComfyUI.

The repair step is not decorative. It exists because this plugin depends on a contrib build of OpenCV, and anything that installs a plain OpenCV package over it breaks the nodes that use guided filtering.

Model files come from a mirror or from Hugging Face

The node set needs model files, and the download instructions are region specific.

Users in China are pointed at a domestic network disk service, and everyone else at a Hugging Face repository under the author's account. Either way the instruction is to download all the files and copy them into the models directory of the ComfyUI installation, or to fetch individual models by following each node's own instructions.

One special case is called out. Nodes whose names include the word Ultra depend on a matting model, and that model goes into its own subfolder under the models directory rather than the top level. It is also included in the bulk download, so a user following the bulk path does not have to think about it.

That is the honest shape of this plugin's dependency story: the code is a single install, but the usable surface is code plus several gigabytes of weights in a directory layout the nodes assume.

Almost every reported error is a version conflict

The troubleshooting section is the most useful part of the documentation, because the failure modes are specific and shared by many users.

An import error for a guided filter function from OpenCV's contrib module means the contrib package is the wrong version or has been overwritten by another OpenCV package. A follow-on name error for the same function has the same cause, and both are fixed by running the repair script for your distribution.

An import error for a matting image processor from the Transformers library means Transformers is too old. Very slow loading of a face library means protobuf is too old. A CUDA error from the ONNX runtime means the runtime package itself needs reinstalling rather than the CUDA toolkit.

The last one is different in kind. An error connecting to the model host during load is a network problem, and the documented workaround for users who cannot reach that host is to patch the model hub client to force a mirror endpoint.

So the pattern is consistent: the nodes themselves rarely break, the Python environment around them does.

The .ini warning is cosmetic and renaming fixes it

One warning is explicitly called out as harmless, which is worth stating because it is the kind of thing that fills a terminal and worries people.

The warning says an ini file was not found and a default is being used. It does not affect usage. The fix, if the noise bothers you, is to rename the example ini files shipped in the plugin directory so they no longer carry the example suffix.

The repository ships exactly two of them at the top level, one for custom size settings and one for a resource directory, which is a small plugin and therefore a small configuration surface.

That is also a decent proxy for the project's shape: the configuration is a couple of ini files, everything else is code, and the ini files ship as templates so a fresh install has something to fall back to.

Version floors live in requirements.txt, not in pyproject.toml

Two files list the same dependencies and only one of them constrains versions.

The project metadata lists the dependencies without floors: numpy, pillow, torch, matplotlib, scipy, scikit image, scikit learn, the contrib OpenCV package, a matting library, a vision library, a colour science library, transformers, a blend modes library, the model hub client and a logging library. The requirements file lists the same set, and adds a minimum version to transformers and to the model hub client.

Since ComfyUI installs plugins from the requirements file, the floors are the ones that actually bind. The metadata is there for the registry and for tooling, and it is looser.

The metadata also carries a description that tells you the project's own history: the drop shadow was the first completed node and follow-up work is in progress. Alongside it there is a ComfyUI section with a publisher identifier, a display name and an icon URL, which is the registry listing format, and a comment noting that the project is used by the Comfy registry.

No releases, so an update is a repository pull

The repository publishes no GitHub releases, and the version lives in the project metadata at 2.0.42.

That combination decides how updates happen. There is no changelog release to pin, no binary to download and no upgrade button. You pull the repository, and the companion repository if you use the nodes that moved there, and then you repair dependencies if the environment complains.

That is also why the rollback instruction is a commit hash rather than a version number. A git reset to a specific commit is the only downgrade mechanism available when a change turns out to break a workflow, and it is a blunt one: it discards local changes to the plugin directory.

The rest of the tree is ordinary for a ComfyUI plugin. There are Python and JavaScript source directories, a directory of colour lookup tables, a directory of fonts and images, a locales directory for translations, and a workflow directory holding example graphs, including one whose name says it is about titles. There are three batch files for installing and repairing dependencies across the two supported distributions, plus a list file that the repair scripts work from.

Editorial conclusion

Use ComfyUI LayerStyle if you want layer and mask compositing inside ComfyUI rather than switching to an image editor, and if you are willing to manage two repositories instead of one. The style and masking nodes are the reason to install it, and the model-driven nodes are the reason it can break. Before you update, read the note at the top of the repository rather than pulling blindly, because a recent split moved dozens of node names into a companion project and an existing workflow will lose nodes unless you install that too. Keep the rollback commit handy, because the documented fix for a bad split is a hard reset to a specific commit, and expect the first run to need a dependency repair if any other OpenCV or Transformers package is already in that environment.

Frequently asked questions

How do I install ComfyUI LayerStyle?

The recommended route is the ComfyUI Manager. Otherwise clone the repository into the custom nodes directory of ComfyUI, or extract a downloaded zip there. Then install the dependencies with the batch file for your distribution, or run the embedded Python interpreter against requirements.txt followed by the repair script, and restart ComfyUI.

Why did my ComfyUI LayerStyle workflow lose nodes after updating?

Because model-driven nodes were split into a separate companion repository. Saved workflows reference node names, and those names moved, so a recent update means you need both repositories installed to keep every node your workflow uses.

How do I roll back ComfyUI LayerStyle?

Open a terminal in the plugin directory and run git reset --hard with the commit hash named in the note at the top of the repository. The documented rollback point is given in the README because the split is the change most likely to break an existing workflow.

Where do ComfyUI LayerStyle model files go?

Download them from the Hugging Face repository listed in the instructions, or from a domestic network disk service for users in China, and copy everything into the models folder of your ComfyUI installation. Nodes named Ultra also need the matting model placed in its own subfolder.

What causes the guidedFilter import error in ComfyUI LayerStyle?

An incorrect version of the contrib OpenCV package, or that package being overwritten by another OpenCV package. The same cause produces the follow-on name error, and both are fixed by running the repair dependency script for your distribution.

Does ComfyUI LayerStyle publish version releases?

No. There are no GitHub releases, and the version is carried in the project metadata instead. Updating means pulling the repository and, if you use the moved nodes, the companion repository as well.

Official sources

  1. chflame163/ComfyUI_LayerStyle on GitHub
  2. Issues
  3. License: MIT
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/chflame163-comfyui-layerstyle.svg)](https://hysenlabs.com/projects/chflame163-comfyui-layerstyle)