② LoRAs · Enzino H3 WF ✦
② LoRAs is one widget holding a JSON stack — here's what's actually in it
- bus
- ✦
② LoRAs · Enzino H3 WF ✦ is the smallest node in the chain and the one that confuses people most, because of how little it shows. It takes the ✦ wire, it has a single text field, and it gives the wire back. That's it. No per-LoRA strength widgets, no separate loader rows, no LoraLoaderModelOnly to wire up.
The field is a JSON list - [{"name": "...", "strength": 0.8, "on": true}, ...] - and the node's own tooltip says exactly that: "LoRA stack: JSON list of {name, strength, on}". You're not meant to type it. The card's UI manages it: rows you add, a strength slider each, an on/off toggle each, and the trigger words one click away so you can paste them into ③ Prompt without going to Civitai to remember what they were.
What happens to that stack
The list rides along the ✦ bus and gets applied in ④ Render, not here. When the render builds its model, it walks the stack in order and calls ComfyUI's model-only LoRA loader for each enabled entry, on top of the Turbo LoRA if one is in use.
Three details are worth knowing because they're all silent:
- Zero-strength entries are dropped. Anything with an absolute strength under 0.0001 is filtered out before loading, so a "disabled by slider" row costs nothing.
- The Free edition caps the stack at three. The extras are truncated with a warning in the console, not an error in the UI. If you added five LoRAs and only three seem to be doing anything, that's why. Full edition goes to eight.
- It's model-only patching. No text-encoder weights are touched. For H3 that's the right call - LoRAs for this model are trained against the diffusion transformer - but if you're used to SDXL LoRAs where the CLIP half carries half the concept, expect a weaker effect at the same strength. It also means a LoRA trained with a TE component won't fully land.
What to set, and what to leave
Strength: start at 1.0 for a single LoRA and pull back to 0.6–0.8 when you're stacking two, which is the usual range before character LoRAs start fighting the base model. Trigger words go in the prompt, not here - the node has no field for them on purpose; it only surfaces them for copying. Where it gets them from is worth knowing: a .civitai.info (or .info / .json) sidecar next to the LoRA file, or the safetensors metadata if it carried a trigger phrase. Drop the Civitai info file beside your download and the trigger words show up with no extra setup.
Stack Turbo under your own LoRAs, which is what the pack does: the Turbo LoRA or the merged Turbo model sets the step count, then your character or style LoRAs sit on top. You won't accidentally double up, either - the card's LoRA list filters files matching turbo_8step / _turbo_ out of the stack picker entirely, because those belong in the Turbo slots over in ① Models.
And name real files. If an entry names something that isn't in models/loras, the render stops with a "LoRA missing" error rather than quietly rendering with fewer LoRAs. That's the one failure mode here that isn't silent.
The trap: a malformed list means no LoRAs at all
Because the stack is a string that gets json.loads-ed at render time, a broken edit - a trailing comma, a smart quote pasted from a chat window, a name with an unescaped character - fails the parse and the render proceeds with an empty stack. No error, no warning, just a video that ignores your character LoRA and a confused user.
If a LoRA seems to do nothing, don't touch the model first. Open the widget, check the JSON is valid, and check the filename matches a file in models/loras exactly, extension included.
Wiring and install
Output is the same ✦ ENZINO_H3 wire, into ③ Prompt. If you have nothing to stack, bypass the node - the bus passes straight through and the settings ① Models already put on it stay intact.
Part of the pack, so the install is the pack's install:
cd ComfyUI/custom_nodes
git clone https://github.com/byenzinoai/ComfyUI-Enzino-H3-Studio
# restart ComfyUI, Ctrl+F5 in the browser
No pip dependencies. The node itself is in the Free edition; only the eight-slot limit is Full. Put LoRA files in ComfyUI/models/loras - the pack lists that folder as-is, so a LoRA in a subfolder still appears with its relative path, and that relative path is what has to go in the JSON.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| bus | ENZINO_H3 | — | |
| loras | STRING | [] | LoRA stack: JSON list of {name, strength, on} |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ✦ | ENZINO_H3 | — |