UNO Generate
Keep a subject consistent without training a LoRA
- uno_model
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- IMAGE
This is the node that actually draws. UNO Generate takes one to four reference images, a text prompt, and your loaded UNO model, and returns an image where the subject - a character, a toy, a product, a face - keeps its identity while the prompt decides the scene. No LoRA training, no adapter weights, no per-subject setup. ByteDance's UNO is built on the idea of in-context generation: instead of teaching the model what your subject looks like ahead of time, you hand it the reference at generation time and it figures out the rest. It dropped in April 2025 and the r/comfyui launch thread called it "the best subject-preserved generator based on FLUX" - with the honest caveats that it's inconsistent on hard cases and genuinely slow on modest GPUs.
How it works
The reference images get preprocessed - resized so the long side is 512 if you're using one reference, 320 if you're using several, then center-cropped to multiples of 16 - and encoded into the latent grid right alongside the noise. That's the whole trick. The DiT attends to those reference tokens during sampling, and a custom positional embedding (UnoPE) gives each reference its own offset in the grid so the attention mechanism can tell subject A from subject B. That's what makes multi-subject generation work where naive in-context approaches collapse into attribute soup. Your text prompt still drives the layout - the model treats it as the instruction, not the references.
The inputs that matter
- uno_model - the
UNO_MODELout of UNO Model Loader. - prompt - a multiline text box; describe the scene and where each subject appears.
- reference_image_1 through reference_image_4 (optional) - the images you're preserving. Wire in a Load Image node. You can stack up to four, and a batched tensor counts each frame as another reference.
- guidance (default 4.0, range 0–10) - the 3–5 zone is the sweet spot; crank it and the prompt overpowers the references.
- num_steps (default 25) - plenty for most prompts; drop toward 20 for speed.
- pe - the reference placement mode (
d/h/w/o). This controls where reference tokens sit in the latent grid. Defaultdspreads them diagonally and is the multi-subject setting you want; leave it alone until you're chasing attribute bleed between two similar subjects.
Width and height step by 16 (256–2048) and get snapped to a multiple of 16 anyway. Output is a single IMAGE - wire it into Save Image or anything downstream - and the node also auto-saves a uno_<seed>_<prompt>.png to your output folder as a bonus.
Installing it
Same pack as the loader: ComfyUI Manager, search "ComfyUI UNO Nodes", or
cd ComfyUI/custom_nodes
git clone https://github.com/alexgenovese/ComfyUI-UNO-Flux
Then restart, and make sure the UNO Model Loader's model files are in place (FLUX.1-dev in models/unet, the AE in models/vae, T5/CLIP in models/clip, dit_lora.safetensors in models/loras). If your dropdowns are empty, that's the problem - nothing loads until those files exist.
Where people get burned
UNO is a multi-subject specialist, not a general identity tool. For single faces, PuLID or FaceID are still sharper and easier. The other honest knock: early adopters found the output inconsistent enough that the common workflow was to use UNO for a prompt-adherent base and then refine with FLUX.1-dev proper. And hardware is the real wall - the thread's 12GB-VRAM owner reported it painfully slow, so fp8 + offload on a 24GB card is the target spec. Finally, remember UNO's weights are CC BY-NC 4.0 on top of FLUX.1-dev's non-commercial license - fine to play with, not fine to sell.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| uno_model | UNO_MODEL | — | |
| prompt | STRING | — | |
| width | INT | 512256–2048 | — |
| height | INT | 512256–2048 | — |
| guidance | FLOAT | 4.00–10 | — |
| num_steps | INT | 251–100 | — |
| seed | INT | 3407 | — |
| pe | COMBO | d | 4 options: d, h, w, o |
| reference_image_1opt | IMAGE | — | |
| reference_image_2opt | IMAGE | — | |
| reference_image_3opt | IMAGE | — | |
| reference_image_4opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |