This article is about Stacker Nodes and how to use them in workflows. It is intended for both new and advanced users of ComfyUI.
Stacker nodes are a new type of ComfyUI node that open the door to a range of new workflow possibilities.
What are stacker nodes?
Stacker nodes store lists of data but do not process data other than doing data validation.
Stacker nodes usually look like tables or list and have the same input and output.
They are generally paired with an 'Apply' node that processes the items in the table or list.
Advantages of Stacker Nodes
They are very extensible. If you need more items in your stack then just chain another stacker node of the same type. For example you can chain three CR LoRA Stack nodes to hold a list of 9 LoRAs.
Some stacker nodes may include a switch attribute that allows you to turn each item On/Off. This is very useful for retaining configurations in your workflow, and for rapidly switching configurations.
Stacker nodes work well with schedulers.
Stackers can also store local attributes that apply to all item in the stacker node.
They are compact and help reduce complexity in workflows. For example the CR Multi-Control Stack can be used used to replace six separate nodes.
Stack nodes do not need to be located lose to the point where they are applied in a workflow. They can be located in a control panel and connected to the apply node via a single connector. This facilitates modularization of workflows.
Node Packs including Stacker Nodes
Types of Stacker Node
There are several types of stacker nodes. These include:
Tabular Stackers
These nodes are similar to tables and hold a list of items with associated attributes.
In the LoRA Stack node the list of items is the LoRA names, and the attributes are the switch, model_weight, and clip_weight.
The output from these nodes is a list or array of tuples.
Examples include
CR LoRA Stack, CR Multi-ControlNet Stack, and CR Model Stack
CR Model List and CR LoRA List
List Stackers
These nodes simply hold a list of items
Examples include
CR Prompt List, CR Image List, and CR Text List
Non-Tabular Stackers
Examples include Control Net Stacker in Efficiency Nodes
Using Local Attributes
Local attributes can be placed at the top of stacker lists.
Examples include CR Animation Stack. In this node, keyframe_interval and loop attributes apply to all the items in the table. Each item has five attributes (including the two local attributes).
Efficiency Loader
The Efficiency Loader node is a special case node that includes inputs for two types of stack.
lora-stack accepts inputs from LoRA Stacker or CR LoRA Stack
cnet-stack accepts inputs from Control Net Stacker or CR Multi-ControlNet Stack
How to Make A Stacker Node
Stacker nodes are very easy to code in python, but apply nodes can be a bit more difficult.
Stacker Node
First define the inputs
Then set the return types, return names, function name, and set the category for the ComfyUI Add Node pop-up menu
Then define the function
Inititialise the list
Extend or append the items from any input stacks
Extend or append the items from the node
Return the list
Apply Node
First define the inputs
Then set the return types, return names, function name, and set the category for the ComfyUI Add Node pop-up menu
Then define the function
Inititialise the attributes list
Extend or append the items from the incoming stacks
Loop through each item in the list
expand each tuple if using a tuple list
do something
Return the output from doing something
FAQ
Q. Are stacker nodes only useful in specific situations?
A. No, they can be used in most workflows substituting for other frequently used nodes.
For example Load LoRA can be substituted with CR LoRA Stack and CR Apply LoRA
Examples of Stacker Nodes
CR LoRA Stack
tabular
LORA_STACK tuple data type
CR Multi-ControlNet Stack
tabular
CONTROLNET_STACK tuple data types
applied using CR Apply Multi-ControlNet
CR Model Stack
tabular
MODEL_STACK tuple data types
applied using CR Apply Model Merge
CR Prompt List
list
PROMP_LIST string data type
applied using CR Prompt List Keyframes
CR Animation Stack
tabular
local attributes
keyframe_interval
loops
ANIMATION_STACK tuple data type
applied using CR Animation Stack Keyframes