Nodes/ComfyUI IC-Custom Node/RunningHub ICCustom Sampler
ComfyUI Node

RunningHub ICCustom Sampler

This Is Where IC-Custom Actually Happens

By HM-RunningHub·Created 12 months ago·Updated 12 months ago· 36
RunningHub ICCustom Sampler
  • pipeline
  • ref_image
  • target_image
  • target_mask
  • image
prompt
num_inference_steps25
guidance40.00
true_gs3.00
seed20

The RunningHub ICCustom Loader gets all the model-hefting glory; this node is where the actual magic happens. Feed it a reference image and a sentence, and it generates a new image of your subject doing, wearing, or standing in whatever the prompt says - no LoRA training, no ControlNet, no face-swap post-processing. Tencent's IC-Custom model does "image customization" directly: same character, new context, in one pass.

You wire it up as a straight line: Loader → Sampler → Save Image, with your reference and prompt hanging off the sampler. It's not an API thing - despite the RunningHub name, this runs fully local.

How it works

IC-Custom is built on the FLUX.1-Fill-dev backbone plus the FLUX Redux image encoder. The sampler builds a side-by-side canvas: your reference image goes on the left, the generation area goes on the right, and the model renders the output into that right side - conditioned on the reference via the Redux/SigCLIP encoder plus IC-Custom's boundary and task-register embeddings, which tell the model where the subject belongs. Output width ends up as target width + reference width; the two halves are baked into a single denoise.

There are two modes, and the sampler picks between them automatically:

  • Position-free - no mask attached. The right side is just a blank white canvas; the model decides subject placement. Fine for "same character, new outfit" type work.
  • Position-precise - connect target_image and target_mask. The mask marks where the subject should land, and the node internally inverts it into the fill mask the pipeline expects. This is the "put my character here" mode.

The inputs that actually matter

Of the seven required inputs, a beginner sets four. The pipeline and ref_image are self-explanatory; seed (default 20) is "the random seed used for creating the noise" - bump it when you want variation. Then:

  • prompt - the actual sentence describing the output. Natural language, FLUX-style, not tag soup.
  • num_inference_steps - default 25. Reasonable; drop to ~20 if you're impatient.
  • guidance (default 40.0) and true_gs (default 3.0) - here's where people panic, because 40 looks insane next to normal FLUX guidance of 3.5. It isn't a typo. guidance is the distilled guidance embedding the FLUX-Fill lineage feeds directly into the model - that's a normal value for it. true_gs is the real classifier-free-guidance scale, run against a hardcoded negative prompt ("worst quality, low quality, low res, blurry") that you can't see or change. Change these last, and only one at a time - the defaults are the authors' tuned recipe.

There are no resolution inputs. Your output size is inherited from the reference image (canvas gets doubled, then rounded to multiples of 16), so if you want bigger results, feed in a bigger reference.

Gotchas

The mask-mode rule takes people by surprise: connect a target_mask and you get precise placement, but if you don't connect one, the sampler discards target_image entirely - position-free mode. If you're trying to composite and wondering why the target is being ignored, that's why.

Performance is the other one. This is the full int8 FLUX stack on every run; 16GB VRAM is the floor, first loads are slow while the loader quantizes, and offloading means some CPU↔GPU shuffling noise. When output looks off, check the reference image before touching the sliders - a small or busy reference is the usual reason the model drifts from your subject's identity.

CategoryRunninghub/ICCustom

Inputs (9)

NameTypeDefaultDescription
pipelineRHICCustomPipeline
ref_imageIMAGE
promptSTRING
num_inference_stepsINT25
guidanceFLOAT40.00
true_gsFLOAT3.00
seedINT200–18446744073709550000The random seed used for creating the noise.
target_imageoptIMAGE
target_maskoptMASK

Outputs (1)

NameTypeDescription
imageIMAGE