Nodes/comfyui-stillfront/SF WaveSpeed Flux ControlNet Union Pro 2
ComfyUI Node

SF WaveSpeed Flux ControlNet Union Pro 2

Flux with real spatial control, served over the WaveSpeed API

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed Flux ControlNet Union Pro 2
  • client
  • output_image
prompt
control_image
size1024*1024
num_inference_steps28
guidance_scale3.5
controlnet_conditioning_scale0.7
control_guidance_start0.00
control_guidance_end0.80
seed-1
num_images1
output_formatjpeg
enable_sync_modetrue
custom_size

ControlNet is how you tell a diffusion model where things go instead of just what they are - you feed it an edge map, a depth map, or a pose skeleton and it composes along that structure. For Flux, the good open ControlNet checkpoints exist, but running them properly means a serious GPU and a bit of setup. SF WaveSpeed Flux ControlNet Union Pro 2 is the lazy path: it hands a control image to WaveSpeed's flux-controlnet-union-pro-2.0 endpoint and returns a composed IMAGE. No checkpoint downloads, no VRAM math - just a public URL for your control image and a few dials.

How it works

"Union" ControlNets are the modern single-file approach: one checkpoint covers multiple condition types (canny edges, soft edge, depth, pose, and friends) instead of needing a separate model per condition. You supply the preprocessed control image as a URL, and the node sends it alongside your prompt with a batch of conditioning parameters. The interesting dials are the ones that control when and how hard the control applies:

  • controlnet_conditioning_scale - default 0.7 (0 = no influence, 2 = maximum). This is the strength dial. Too low and your canny map is decorative; too high and the prompt can't breathe.
  • control_guidance_start / control_guidance_end - default 0.0 to 0.8. The control window in denoising time. Stopping at 0.8 (before the end) is the classic trick for letting the model add fine detail in the late steps without breaking the structure.

The rest reads like a familiar sampler block: num_inference_steps (28), guidance_scale (3.5), seed (-1 = random), num_images (1–4), output_format (jpeg/png/webp), and enable_sync_mode.

The inputs that matter

For a beginner, three things:

  • client - the SF WaveSpeed Client output. No client, no generation.
  • prompt - what the image should contain, decoupled from where.
  • control_image - a public URL of your control input (edges, depth, pose). This is the input that makes or breaks the result - garbage in, garbage composed.

Also useful: size (presets like 1024*1024), and custom_size (an optional "width*height" string like "1920*1080" that overrides the dropdown if provided). Output is output_image (IMAGE).

Installing it

In the SF ComfyUI Nodes pack from Stillfront. ComfyUI Manager → "SF ComfyUI Nodes" → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt

Plus a WaveSpeed API key through SF WaveSpeed Client.

Common issues

The usual URL trap applies - the control_image must be publicly fetchable or the request dies immediately. The more interesting failure is silent: a preprocessed control image that doesn't match what the union model expects. A canny map resized to a tiny thumbnail will technically work and produce mush. Keep control inputs at a reasonable resolution, and treat controlnet_conditioning_scale as your primary lever - most "it ignored the control" complaints are solved by moving 0.7 toward 1.2. And if you're coming from a local ComfyUI ControlNet workflow, note that Flux's controlnets don't load on other architectures; this node sidesteps that entirely by using the API-side model, which is honestly the point.

CategoryStillfront/WaveSpeed

Inputs (14)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGText description of the image to generate
control_imageSTRINGURL of control image for ControlNet guidance (connect from Upload Image node)
sizeCOMBO1024*1024Resolution of the generated image
num_inference_stepsINT281–50Number of denoising steps (higher = better quality, slower)
guidance_scaleFLOAT3.50–20How closely to follow the prompt (higher = more adherence)
controlnet_conditioning_scaleFLOAT0.70–2Influence of control image on generation (0=none, 2=maximum)
control_guidance_startFLOAT0.000–1When to start applying control (0=beginning)
control_guidance_endFLOAT0.800–1When to stop applying control (1=end)
seedINT-1-1–18446744073709550000Random seed for reproducible results. -1 for random seed
num_imagesINT11–4Number of images to generate (1-4)
output_formatCOMBOjpegFormat of the output image
enable_sync_modeBOOLEANtrueWait for generation to complete before returning
custom_sizeoptSTRINGCustom size as 'width*height' (e.g. '1920*1080'). Overrides size dropdown if provided.

Outputs (1)

NameTypeDescription
output_imageIMAGE