Nodes/ComfyUI-fal-API/Flux General (fal)
ComfyUI Node

Flux General (fal)

Flux with ControlNet, IP-Adapter and LoRA in one node

By gokayfem·Created 2 years ago·Updated a day ago· 203
Flux General (fal)
  • control_image
  • control_mask
  • ip_adapter_image
  • ip_adapter_mask
  • IMAGE
prompt
image_sizelandscape_4_3
width1024
height768
num_inference_steps28
guidance_scale3.0
real_cfg_scale3.3
num_images1
enable_safety_checkerfalse
use_real_cfgfalse
sync_modefalse
seed-1
ip_adapter_scale0.6
controlnet_conditioning_scale0.6
ip_adaptersNone
controlnetsNone
controlnet_unionsNone
controlnet_union_control_modecanny
lora_path_1
lora_scale_11.00
lora_path_2
lora_scale_21.00

This is the kitchen-sink Flux node. Where FluxDev_fal is a plain text-to-image box, FluxGeneral_fal bolts on the whole control stack - ControlNet, IP-Adapter, real CFG, and LoRAs - and runs all of it on fal's hardware. If you've ever wanted a structured, guided Flux generation but didn't want to download a pile of ControlNet checkpoints and adapters, this is the node that does it over the API. One box, a native IMAGE out.

It's genuinely the most capable node in the pack's Flux lineup, and also the most likely to overwhelm a beginner, because the optional inputs are long. The good news: everything past the basics is optional and defaults to "off," so you can treat it as plain Flux and only reach for the extras when you need them.

The three superpowers

ControlNet conditions the image on spatial structure - edges, depth, or pose extracted from a reference - so your prompt decides what appears and the control map decides where it goes. Pick a model in controlnets (canny, depth, surface-normals, upscaler, lineart, and union options are all listed), feed a control_image, and set controlnet_conditioning_scale. For a union model, controlnet_union_control_mode picks which mode (canny/depth/pose/tile/...).

IP-Adapter is image prompting without training a LoRA: hand it a reference via ip_adapter_image, set ip_adapters to the Flux IP-Adapter, and ip_adapter_scale controls how strongly the reference's style/identity bleeds in.

Real CFG. Flux Dev has no native negative prompt - guidance is distilled into the weights. Flip use_real_cfg on and set real_cfg_scale to restore true classifier-free guidance, which is what makes an actual negative prompt possible on Flux.

Plus two lora_path slots with scales, same as FluxLora_fal.

The inputs that matter

For a first run, ignore the wall of options and set: prompt, guidance_scale (default 3), and a control_image + a controlnets choice if you're steering composition. Note enable_safety_checker defaults to false on this node (unlike most of the pack). Output is one IMAGE.

Installing it

ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
pip install -r ComfyUI-fal-API/requirements.txt

No models to download - the ControlNet and IP-Adapter weights live on fal, referenced by name. Set your key (config.ini or export FAL_KEY=...; get it at fal.ai/dashboard/keys), restart, find it under FAL.

Where people get burned

The overwhelm is the main hazard - people wire up a control_image but forget to select a controlnets model (it defaults to "None"), then wonder why the structure isn't being followed. Both halves have to be set: the model and its image. Same for IP-Adapter: ip_adapters must be switched off "None" for ip_adapter_image to do anything.

Stacking ControlNet + IP-Adapter + two LoRAs also means a heavier, pricier fal call, so build up one feature at a time rather than turning everything on at once. And each run is billed - the persistent cache spares you re-paying for identical settings, but a genuinely different control image is a new charge. If a call errors, read fal's message; a mismatched control mode or an unreachable LoRA URL usually names itself.

CategoryFAL/Image

Inputs (26)

NameTypeDefaultDescription
promptSTRING
image_sizeCOMBOlandscape_4_37 options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, +1
widthINT1024512–1536
heightINT768512–1536
num_inference_stepsINT281–50
guidance_scaleFLOAT3.00–20
real_cfg_scaleFLOAT3.30–5
num_imagesINT11–4
enable_safety_checkerBOOLEANfalse
use_real_cfgBOOLEANfalse
sync_modeBOOLEANfalse
seedoptINT-1
ip_adapter_scaleoptFLOAT0.60–1
controlnet_conditioning_scaleoptFLOAT0.60–1
ip_adaptersoptCOMBONone2 options: None, XLabs-AI/flux-ip-adapter
controlnetsoptCOMBONone9 options: None, XLabs-AI/flux-controlnet-depth-v3, Shakker-Labs/FLUX.1-dev-ControlNet-Depth, jasperai/Flux.1-dev-Controlnet-Depth, jasperai/Flux.1-dev-Controlnet-Surface-Normals, XLabs-AI/flux-controlnet-canny-v3, +3
controlnet_unionsoptCOMBONone3 options: None, Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro, InstantX/FLUX.1-dev-Controlnet-Union
controlnet_union_control_modeoptCOMBOcanny7 options: canny, tile, depth, blur, pose, gray, +1
control_imageoptIMAGE
control_maskoptMASK
ip_adapter_imageoptIMAGE
ip_adapter_maskoptMASK
lora_path_1optSTRING
lora_scale_1optFLOAT1.000–2
lora_path_2optSTRING
lora_scale_2optFLOAT1.000–2

Outputs (1)

NameTypeDescription
IMAGEIMAGE