TS Studio LoRA Stack
The placeholder that lets TS Image Studio stack your LoRAs for you
- model
- model
A LoRA stack is a solved problem in hand-built ComfyUI graphs: you chain one LoraLoaderModelOnly per LoRA, strengths in the strength fields, order matters. The problem this node solves is different - how does a shared TS Image Studio backend workflow accept whatever LoRAs the user happens to have, without the backend author hardcoding a chain of loaders into the graph?
TS_StudioLoraStack is the answer: a marker node you drop between the model loader and the sampler. In the studio, it's the exact spot where the user's LoRA chain gets inserted.
How it works
At run time the studio's patcher expands this marker into a real chain of native LoraLoaderModelOnly nodes - one per stacked LoRA, in order, each carrying its own strength. That matters for two reasons:
- It's identical to a hand-built chain. The result is the same model object you'd get wiring the loaders yourself, so a backend that works with this marker behaves exactly like the equivalent explicit graph.
- Empty stack = direct connection. No LoRAs loaded, no expansion - the model just passes through. The studio doesn't even need a special "no LoRAs" case.
Order isn't a technicality here. LoRAs apply sequentially, and the order they apply in changes the result - a character LoRA before a style LoRA is not the same as after. The studio preserves the order the user stacked them, and so should you if you're eyeballing why a backend output shifted.
The interface
It's minimal by design:
model(input) - the model that will receive the LoRA chain. Wire this to whatever the backend uses as its model source.model(output) - the model with the chain applied, ready for the sampler.
Nothing else. Standalone - outside the studio, in a normal graph - it's a plain passthrough: model in, model out, untouched. That's the marker contract again, same as the other TS_Studio* markers: inert when hand-run, meaningful when the studio drives it.
Installing and using it
It comes with the comfyui-timesaver pack: ComfyUI Manager → search Timesaver, or
cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-timesaver
cd comfyui-timesaver
python -m pip install -r requirements.txt
then restart ComfyUI. Use the same Python ComfyUI runs from.
Gotchas
If you're authoring a backend and the studio ignores your LoRA choices, check you actually placed this marker between the model loader and the sampler - it has to be on the model path the sampler reads. Put it on some side branch and the expansion has nothing to do. And because an empty stack collapses to a direct connection, you can ship one backend file that works for people with zero LoRAs and people with eight, which is exactly the point of the whole marker system. If you're not using the studio at all, there's no reason to reach for this - the pack's regular TS LoRA Loader is the version you'd wire into a normal graph.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Model to receive the LoRA chain. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |