PVL FLUX General (fal.ai)
NAG guidance, shifts, and reference images
- reference_image
- IMAGE
Most fal-node wrappers expose ten sensible settings and let the API do the rest. PVL FLUX General is not that. It wraps fal's flux-general endpoint - the one that hands you the sampler internals - with a control panel for scheduler, beta schedule, shift parameters, and NAG guidance, plus optional reference-image conditioning and up to three LoRAs. If you've ever wanted to tune a Flux generation below the level of "change the CFG," this is the node where the pack stops being a wrapper and starts being a lab bench.
It's part of the ComfyUI Assistant Node pack from pvlprk, in the fal family. The idea: same family of models as the rest, but with the dials most wrappers hide.
How it works
Under the hood it's the same pattern - build a payload, POST to fal-ai/flux-general, download the image. The difference is what goes in the payload. Besides the standard prompt, steps, CFG, num_images, and size (256–1440, defaulting to the 1392×752 landscape pair), you get:
scheduler-eulerordpmpp_2m.use_beta_scheduleandbase_shift/max_shift- the Flux-family training-time shift knobs. For most people these should stay at defaults (off, 0.5, 1.15). They change the noise schedule, and "changed the noise schedule" is rarely the fix you needed.- NAG parameters -
nag_scale,nag_tau,nag_alpha,nag_end. NAG (negative-aware guidance) is the flux-general-specific guidance variant; these four control its strength and shape. This is deep-end stuff. Start withnag_scaleand leave the rest. negative_prompt- yes, a real negative prompt, which regular Flux endpoints often lack.reference_imagewithreference_strength/reference_start/reference_end- image-conditioned generation: send a photo and a prompt, and the output follows both, with the strength sliders controlling how hard the reference pulls. The image goes out as a base64 data URI.lora1_name…lora3_namewith scales - fal-hosted LoRAs, same as the pack's other LoRA nodes.
The inputs that matter for a beginner
Honestly: prompt, width/height, and if you want to experiment, reference_image plus reference_strength. Everything else has a default that's fine to leave alone. The shift and NAG parameters are for when you've read up on what they do and have a specific hypothesis - they're not tuning knobs you're supposed to wiggle blindly.
Output: one IMAGE.
Installing it
Part of pvlprk/comfyui-pvl-api-nodes. Install via ComfyUI Manager (search "ComfyUI Assistant Node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Set your fal.ai key as FAL_KEY (or FAL_API_KEY / FAL_CLIENT_KEY), restart, add credits.
Where people get burned
The trap here is over-tuning. The NAG and shift parameters interact - change three at once and you won't know which one moved the result. Change one, keep notes. And this node's enable_safety_checker defaults to off, unlike the plain Flux Dev node, so if you're getting results you didn't expect from fal's side, check that toggle. Standard FAL_KEY and blank-placeholder-image gotchas apply as always.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| width | INT | 1392256–1440 | — |
| height | INT | 752256–1440 | — |
| steps | INT | 281–100 | — |
| CFG | FLOAT | 3.51–20 | — |
| num_images | INT | 11–4 | — |
| enable_safety_checker | BOOLEAN | false | — |
| output_format | COMBO | png | 2 options: jpeg, png |
| sync_mode | BOOLEAN | false | — |
| seedopt | INT | -1-1–4294967295 | — |
| negative_promptopt | STRING | — | |
| scheduleropt | COMBO | euler | 2 options: euler, dpmpp_2m |
| use_beta_scheduleopt | BOOLEAN | false | — |
| base_shiftopt | FLOAT | 0.500–1 | — |
| max_shiftopt | FLOAT | 1.150–2 | — |
| nag_scaleopt | FLOAT | 3.00–10 | — |
| nag_tauopt | FLOAT | 2.50–5 | — |
| nag_alphaopt | FLOAT | 0.250–1 | — |
| nag_endopt | FLOAT | 0.250–1 | — |
| reference_imageopt | IMAGE | — | |
| reference_strengthopt | FLOAT | 0.650–1 | — |
| reference_startopt | FLOAT | 0.000–1 | — |
| reference_endopt | FLOAT | 1.000–1 | — |
| lora1_nameopt | STRING | — | |
| lora1_scaleopt | FLOAT | 1.0-2–2 | — |
| lora2_nameopt | STRING | — | |
| lora2_scaleopt | FLOAT | 1.0-2–2 | — |
| lora3_nameopt | STRING | — | |
| lora3_scaleopt | FLOAT | 1.0-2–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |