Z-Image Stacker
Build a LoRA stack without the spaghetti
- input_stack
- LYCORIS_STACK
The Zlycoris raw loaders accept an optional LYCORIS_STACK input so you can apply several adapters in sequence instead of one. ZImageLycorisStacker is the node that builds that stack: it takes a LoRA plus its strengths, prepends any existing stack you hand it, and outputs a LYCORIS_STACK - a list of patch jobs that flows into ZImageLoaderAndPatcher or ZImageAITKLoRALoader.
Why stack at all
Plain "multiple Load LoRA nodes into one model" stacking is a known Z-Image pain point: the community repeatedly reports quality collapse when more than one standard LoRA is applied at once, while structured stacking with LoKR/LoHA formats has shown it can work. This node is the structured route - you keep each adapter's strength, chain them in order, and let the patcher apply them one after another on the raw state dicts. It's the same idea as a "LoRA stacker" in packs like Efficiency or rgthree, but tuned to the raw pipeline and LyCORIS formats this pack cares about.
The inputs
lora_name- dropdown frommodels/loras/.strength_model/strength_clip- default 1.0, range ±100 (matching the loaders).input_stack(LYCORIS_STACK, optional) - chain stackers: feed one stacker's output into the next one'sinput_stackand you get an ordered list where the later node's LoRA is applied after the earlier ones.
The single LYCORIS_STACK output then goes into a loader's lora_stack socket. Order matters: the patcher applies stack jobs in list order, so put character adapters before style adapters (or whatever order you want the layering).
Install
ComfyUI Manager (search ComfyUI-Zlycoris) or:
cd ComfyUI/custom_nodes
git clone https://github.com/TripleHeadedMonkey/ComfyUI-Zlycoris.git
Restart ComfyUI. Pure plumbing - no models.
Where people get burned
- Strengths of 0 are how you disable a stack member. The patcher skips any job with
strength_modelorstrength_clipat 0. So a zero isn't a bug, it's a bypass - useful for A/B testing a stack without disconnecting wires. - The stack is just metadata until a loader consumes it. A
LYCORIS_STACKoutput does nothing on its own. If nothing seems applied, check that it's actually wired into the loader'slora_stack, and that the loader got a reallora_nametoo - the loader applies the stack and then the single LoRA on top. - Order isn't labeled in the graph. With three chained stackers it's easy to lose track of which order they resolve in. The convention is: the node closest to the loader in the chain is applied last. Add a note or title to your stackers if you're stacking more than two.
- This stacker speaks the raw/LyCORIS pipeline. For normal ComfyUI-native stacking you'd stay with the standard LoRA nodes - this one only plugs into the Zlycoris loaders, so don't try to wire its output into
Load LoRA.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | COMBO | 0 options: | |
| strength_model | FLOAT | 1.00-100–100 | — |
| strength_clip | FLOAT | 1.00-100–100 | — |
| input_stackopt | LYCORIS_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LYCORIS_STACK | LYCORIS_STACK | — |