RunningHub USO Sampler
RunningHub USO Sampler
- uso
- content_image
- style_image
- style2_image
- image
The RunningHub USO Sampler is the node that actually does the thing. Feed it a photo of a subject, a photo of an art style, and a text prompt, and it hands back a new image that keeps your subject while wearing the style. No LoRA training, no face-burning, just reference images. If you loaded a USO workflow and found the node you were actually looking for, this is it.
What's actually happening under the hood
USO (short for "Unified Style and Subject-Driven Generation", paper arXiv 2508.18966) is a ByteDance research model built on top of FLUX.1-dev. It was open-sourced in late August 2025, and the community was refreshing r/comfyui going "Comfy wen???" the day it landed. The clever bit is how small the adaptation is: a LoRA plus a projection layer, roughly 500MB of weights total, riding on a stock FLUX.1-dev install. Where IP-Adapter gives you image prompting and PuLID gives you identity, USO tries to do both at once - style and subject in a single pass, plus the option to mix two styles.
The reference images don't all flow the same way, which is worth knowing:
- content_image is resized to a 512px long edge, center-cropped, and injected as the pixel-level subject reference. It's your "who/what", not your composition.
- style_image and style2_image go through a SigLIP vision encoder as style embeddings. They're your "look", and you can feed two of them to blend.
Everything else about the sampler is a hardcoded black box. Model type (flux-dev-fp8), LoRA rank (128), CPU offload, and the reference size are all baked into the source - you don't get a schedule chooser or sampler picker here, just the six knobs below. That's fine; USO is tuned as a unit, not meant to be disassembled.
The inputs that matter
- prompt (required) - plain text, multiline. Describe the scene you want.
- content_image (optional) - the subject/reference shot.
- style_image / style2_image (optional) - one or two style references.
- guidance (default 4.0) - FLUX-style low value; nudging it up stiffens prompt adherence.
- num_inference_steps (default 25) - the usual speed/quality trade.
- width / height (default 1024), seed - per the schema, the seed is "the random seed used for creating the noise." Nothing exotic.
The single output is image (an IMAGE tensor), which wires straight into Save Image, a preview node, or anything downstream. Leave all three image inputs empty and you're just running FLUX prompt generation with a USO LoRA loaded - technically possible, totally missing the point.
Installing and wiring it
This node is one half of the HM-RunningHub/ComfyUI_RH_USO pack ("ComfyUI USO Node"), and it's useless without its sibling: the RunningHub USO Loader must feed its USO Modules output into the sampler's required uso input. So the real install is the pack plus about 35GB of models. In ComfyUI Manager, search for "ComfyUI USO Node", or:
cd ComfyUI/custom_nodes
git clone https://github.com/HM-RunningHub/ComfyUI_RH_USO
cd ComfyUI_RH_USO && pip install -r requirements.txt
Then restart and download the models - the Loader article walks the full list and paths, because the README's download section is missing a couple of files the code genuinely needs.
Where people get burned
- It's a black box by design. Because the sampler reloads the entire stack on every queue run, the first generation after adding the Loader is slow: T5, CLIP, VAE, FLUX.1-dev, SigLIP and the adapters all load before the first pixel appears. That's normal, not a hang.
- Expect ~16GB VRAM. FP8 precision plus CPU offload gets it onto consumer cards, but a 12GB card will be a sad time.
- The content image is a subject reference, not img2img. Don't expect your exact framing, lighting, or camera angle back - you get the identity and a new scene. Center-crop is aggressive for non-square refs.
- The "USO Modules" error is almost always a wiring problem - the loader's bundle isn't connected to the sampler's
usoinput, or the loader errored on load.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| uso | RHUSOMudules | — | |
| prompt | STRING | — | |
| width | INT | 1024 | — |
| height | INT | 1024 | — |
| num_inference_steps | INT | 25 | — |
| guidance | FLOAT | 4.00 | — |
| seed | INT | 200–18446744073709550000 | The random seed used for creating the noise. |
| content_imageopt | IMAGE | — | |
| style_imageopt | IMAGE | — | |
| style2_imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |