AppBuilder Lora Stack
A LoRA stack your app users can actually drive
- model
- clip
- MODEL
- CLIP
If you've used rgthree's Power Lora Loader, you already know the shape of this node - a single entry point that stacks multiple LoRAs so you don't chain a dozen Lora Loaders down the graph. AppBuilderLoraStack is the app-UI sibling of that idea. The difference is where the list of LoRAs comes from: instead of you clicking through combo boxes, it's a JSON string the app's web form generates. The app's users pick LoRAs in a friendly picker; this node turns that pick into real MODEL and CLIP patches.
How it works
The single required input is lora_stack, a STRING holding JSON like this:
[
{"lora_name": "None", "strength": 1.0, "enabled": true}
]
At execution the node parses the array and applies each entry through ComfyUI's own LoraLoader - no reinvented fusion logic. The good behavior is all in the filtering, and it's exactly what you want for an app where an end user's machine might not have every LoRA you listed:
- Entries with
enabled: falseare skipped. - Names of
"None"are skipped. - A missing LoRA file logs a warning and skips instead of crashing the run - the app doesn't hard-fail because someone else's disk lacks a file.
- Each entry supports decoupled
strength_modelandstrength_clip(falling back to the singlestrengthvalue), the same split rgthree popularized. If both strengths are 0 it skips the fusion entirely to save a pass.
Wiring it up
Feed it a base model and clip from a checkpoint loader, then pass the outputs on:
Load Checkpoint (model, clip) → AppBuilderLoraStack → KSampler
The optional model and clip inputs are MODELS/CLIPs like any other; leave them empty and the node returns nothing useful, so wire them. In a real app setup the LoRA picker in the AppBuilder config panel writes the JSON into lora_stack, and the user's selections flow straight through. When the config panel auto-detects that a target node's lora_stack slot is connected, it presents it as a 📚 LORA STACK control - the same JSON, nicer face.
Install
It ships in the PowerPanel pack (also labelled "ComfyUI-AppBuilder" in older docs - lihaoyun6 renamed the repo):
cd ComfyUI/custom_nodes
git clone https://github.com/lihaoyun6/ComfyUI-PowerPanel
Restart ComfyUI, or install via Manager. Only pynvml and psutil in requirements.txt, both auto-installed; no models to fetch. LoRAs come from your normal models/loras folder.
Gotchas
The one that bites: because the node's name list only comes from lora_stack, a LoRA won't appear until it's on disk - and if a user's machine is missing one, the node warns and continues with the rest. That's a feature for apps, but it means a silently-thinner stack if you don't read the log. Prefer enabled: false over deleting entries when you want to keep a picker option around without applying it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_stack | STRING | [{"lora_name":"None","strength":1.0,"enabled":true}] | — |
| modelopt | MODEL | — | |
| clipopt | CLIP | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |