Visual Series Lab (Studio Leiel)
A render queue you can see into and change mid-run
- model
- clip
- model
- conditioning
- this render's prompt
- this render's loras
- status
- filename
Testing a new series usually means finding which style suits it: five or six candidate LoRAs, four or eight variations each, and the queue is forty deep before you've rendered anything. ComfyUI will happily run all forty. What it won't do is tell you which one you're looking at, or let you change your mind. A queued run is a sealed box - you watch a LoRA you already dislike render its remaining twelve images, or you cancel them one at a time, counting in your head.
Visual Series Lab keeps the queue open. It's a render queue where every render says which prompt, which LoRAs and which settings made it - while it's happening - and a recipe can be pulled out, added to, or given a bigger count mid-run, with nothing already rendered repeated.
How it works
Ingredients sit on shelves: a Prompt Shelf (one chip per prompt wired into prompt1 through prompt6), a LoRAs Shelf (browsable by preview picture, favourites kept on disk), and an Options Shelf - the widgets of every other node in the workflow, listed without wiring anything. Click chips to build a recipe: one prompt, the LoRAs you want with it, the settings you want changed. + ADD TO QUEUE, and each queued render is set up fresh.
Two mechanisms matter. First, this node applies LoRAs itself with comfy.sd.load_lora_for_models rather than steering your loader from the browser - the pack's comments say they tried the other way four times and lost every time, because a loader rebuilds its own list. Second, trigger words are read out of each LoRA's own metadata file, so the words arrive with the LoRA. During a sweep only the active LoRA's words stay in the prompt, and they're prepended by default because the encoder weighs the front of the text most. That's the detail that makes a LoRA comparison mean anything - otherwise the five that are switched off keep steering every render.
The model and clip inputs are required; it doesn't sample, decode or save - a KSampler stays on the canvas, and this node just hands it a patched model and ready-made conditioning for this render. Values written for one render are put back afterwards, so a recipe changes the graph for one picture and leaves it as it was.
The inputs and outputs that matter
Beyond model and clip, the only sockets a human wires are prompt1–prompt6 - connect a text node and a chip appears, up to six. (queue_json and current_json are internal JSON the node's face manages; leave them alone.) Outputs are model and conditioning, plus this render's prompt, this render's loras (e.g. Sofia_v1(1.0), canon1D(0.8)), status and filename - the last four exist to feed a filename-manager node downstream, so what the screen tells you during a run, the file name tells you afterwards.
Give a setting more than one value and every combination renders: two samplers × two strengths × four images is 16 renders, and the count updates as you build. Only what's in the queue box runs, from the top down; PAUSE stops it where it is; Export/Import turns a good plan into a reusable template.
Install
Part of Visual Suite (Studio Leiel). Search that name in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/StudioLeiel/comfyui-visual-suite
Restart ComfyUI. No extra dependencies - it uses ComfyUI's own LoRA loading, no separate install.
Common issues
- "The clip input is not connected." If you placed this node with an older version of the pack, its inputs changed - the fix is in the error message: delete it and add it again.
- A LoRA silently doesn't apply. It logs
LoRA not found, skipped:and keeps going, so watch the console. It resolves by short name against yourlorasfolder, so a file in a subfolder still works - but if the file isn't there, nothing breaks loudly. - A recipe's trigger words bleed into every render. Only the active LoRA's words should be lit during a run; if you see others, the metadata file beside the LoRA is missing and it can't read the ownership - check for the
.info.json/.metadata.jsonbeside the file.
If you do style-comparison work at all, this is the node you'd reach for - it turns a forty-render lockdown into something you can steer while it cooks.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| queue_json | STRING | [] | — |
| current_json | STRING | {} | — |
| prompt1opt | STRING | — | |
| prompt2opt | STRING | — | |
| prompt3opt | STRING | — | |
| prompt4opt | STRING | — | |
| prompt5opt | STRING | — | |
| prompt6opt | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| conditioning | CONDITIONING | — |
| this render's prompt | STRING | — |
| this render's loras | STRING | — |
| status | STRING | — |
| filename | STRING | — |