LLS Universal Image Generator
A whole txt2img pipeline hiding in a single node
- image
Everything you'd normally wire together to go from prompt to image - checkpoint loader, prompt encoder, sampler, VAE decode - is inside this one node. LLS Universal Image Generator takes a checkpoint name, a prompt, and sampling settings, and returns a finished IMAGE. Pick SD1.5, SDXL, or FLUX in the family dropdown and it swaps in the right backend for you. It's the "just make me a picture" node of the LLS-node pack, and for beginners it's a genuinely nice on-ramp: one node to learn instead of four.
There's a real trade to be honest about, though. All that wiring it hides is also leverage you lose. No img2img, no ControlNet port, no LoRA slot - task_mode currently only has txt2img, and the node won't be growing img2img until the author ships it. Treat it as a fast path to a first image, not a replacement for a real graph once you start iterating.
How it works
The node does almost no work itself. It collects your settings into a generation request object and hands it to a dispatcher (get_backend), which picks a family-specific backend adapter - SD 1.5, SDXL, or FLUX. Each backend then: loads the checkpoint through ComfyUI's model loading, encodes your positive and negative prompts the way its family expects, runs the sampler with your steps/CFG/seed, and VAE-decodes the latent back to pixels. The backend split is the interesting architectural bit - it means each family gets correct, tailored handling (FLUX gets T5-style prompt encoding and its own default guidance, SDXL gets its dual-encoder treatment) without you having to build three workflows.
Inputs that matter
model_family-SD1.5,SDXL, orFLUX. This must match the checkpoint you pick inmodel_name; the backend validates the loaded model against the family you claimed and errors if they disagree.model_name- dropdown of every checkpoint inComfyUI/models/checkpoints/.positive_prompt/negative_prompt- remember the family rules: on FLUX the negative is effectively ignored.width/height(default 1024²) - step-locked to multiples of 8. 1024 is right for SDXL/FLUX; knock it down to 512 for SD 1.5.steps(20),cfg(7.0),sampler_name(euler),scheduler(normal) - standard sampling controls. SD 1.5 likes CFG 7 and 20–30 steps; FLUX and distilled models usually want lower CFG and fewer steps, and the backend's per-family defaults are what make the one-node approach workable.seed(-1 = random; the node ships with acontrol_after_generatetoggle on the seed, so set it tofixedwhen you land on an image you want to keep - the "lost seed" trap is real).denoise(1.0) - leave at 1.0 for txt2img.
Output
A single image IMAGE tensor. Wire it to Preview Image or Save Image. That's the whole output surface - which is the point, and also the limitation.
Installing
ComfyUI Manager → search "LLS-node", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Gin3601/LLS-node
Restart, look under LLS/Image. The pack has no requirements.txt; it relies on core ComfyUI plus whatever the backends load from your models folder.
Gotchas
(no checkpoints found)inmodel_namemeansmodels/checkpoints/is empty. Add a checkpoint and refresh before troubleshooting anything else.- Family mismatch is the top failure. Pick
FLUXin the dropdown but an SDXL file inmodel_nameand the backend raises a validation error rather than silently producing garbage - which is good, but it means the dropdown and the family are a matched pair. Set them together. - It's txt2img only. The moment you want an image input, an img2img task, or a LoRA, you're back in the full graph - which is honestly fine, because that's also the moment you should be.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model_family | COMBO | SD1.5 | 3 options: SD1.5, SDXL, FLUX |
| task_mode | COMBO | txt2img | 1 options: txt2img |
| model_name | COMBO | 1 options: (no checkpoints found) | |
| positive_prompt | STRING | — | |
| negative_prompt | STRING | — | |
| width | INT | 102464–16384 | — |
| height | INT | 102464–16384 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.00–100 | — |
| seed | INT | -1-1–18446744073709550000 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | normal | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |