Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux General · $0.075/MP
ComfyUI Node

arkennemasis fal · Flux General · $0.075/MP

LoRAs, ControlNet, IP-Adapter and negatives, all behind one node

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux General · $0.075/MP
  • fill_image_fill_image_1
  • fill_image_fill_image_2
  • fill_image_fill_image_3
  • fill_image_fill_image_4
  • fill_image_fill_image_5
  • fill_image_fill_image_6
  • reference_image
  • images
  • image_paths
  • timings
  • has_nsfw_concepts
  • prompt
  • seed
  • info
◄prompt►
◄image_sizesquare_hd►
◄image_size_width1024►
◄image_size_height1024►
◄num_inference_steps28►
◄seed-1►
◄loras►
◄control_loras►
◄controlnets►
◄controlnet_unions►
◄ip_adapters►
◄easycontrols►
◄guidance_scale3.50►
◄real_cfg_scale3.50►
◄use_real_cfgfalse►
◄use_cfg_zerofalse►
◄num_images1►
◄enable_safety_checkertrue►
◄reference_strength0.65►
◄reference_start0.00►
◄reference_end1.00►
◄base_shift0.50►
◄max_shift1.15►
◄output_formatpng►
◄use_beta_schedulefalse►
◄schedulereuler►
◄negative_prompt►
◄nag_scale3.00►
◄nag_tau2.50►
◄nag_alpha0.25►
◄nag_end0.25►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Every other Flux endpoint on fal is a specialist: this one is the general-purpose endpoint, and it's general in the way a Swiss army knife is. LoRA, ControlNet, control LoRAs, IP-Adapter, EasyControl, reference-only conditioning, a scheduler choice, negative prompts via NAG - all present, all optional, all in one node. It's the most configurable thing in this pack and the one most likely to be overkill.

It's also the most expensive per megapixel in the Flux line at $0.075/MP - three times Flux Dev - so the question isn't "which is better" but "do I actually need one of these extensions".

When you reach for it

You need a LoRA you don't have locally. You need two conditions at once (a pose plus a depth map). You want reference-only conditioning, which is somewhere between img2img and IP-Adapter. Or you want negative prompting on Flux without the local NAG install.

Otherwise, use the specialist node. flux-dev at a third the price is the same base model.

The JSON fields, and what they actually want

Six inputs on this node take JSON, and they're the reason the node looks intimidating:

  • loras - the extra LoRAs to merge in.
  • control_loras - LoRAs that consume a control image.
  • controlnets - note the tooltip: only one is supported at the moment.
  • controlnet_unions - same single-controlnet caveat.
  • ip_adapters - IP-Adapter entries.
  • easycontrols - EasyControl inputs.

Empty means "leave it out", and empty is the right value for all six until you have a specific reason. Here's the practical gotcha nobody mentions: these expect URLs to files fal can fetch. See a LoRA on CivitAI you want to try? Its safetensors has to live somewhere fal can download it from - a Hugging Face repo, your own storage, an S3 bucket. LoRAs sitting in your ComfyUI models/loras folder are invisible to this endpoint. That one fact kills the "just point it at my local library" expectation instantly.

The NAG knobs, which are the real reason to look twice

Flux is guidance-distilled, and on a guidance-distilled model negative prompts are inert rather than weak - there's no unconditional pass to steer at guidance 1. That's why "blurry, ugly, deformed" in a negative field does nothing on modern Flux. The workaround the community settled on is NAG (Normalized Attention Guidance), which intervenes in attention space instead of the guidance term, and the author's own caveat is not to exceed nag_scale 3.

This endpoint exposes it, and it's the only node in this pack where negative_prompt is a serious field:

  • negative_prompt - steer away from unwanted features. Empty leaves it out.
  • nag_scale (default 3) - higher pushes further from the negative. Do not exceed 3.
  • nag_tau (2.5) - normalisation of the hidden state.
  • nag_alpha (0.25) - final weighting of the positive/negative direction.
  • nag_end (0.25) - the proportion of steps NAG applies for; after that the original attention processors take over.

If you've ever wondered whether negatives do anything on Flux without a NAG install: this node is the cleanest place to find out.

The CFG fields, and the expensive one

use_real_cfg (default false) restores classical SD1.5-style CFG. The tooltip is explicit that it increases generation times and price. real_cfg_scale (3.5) is that guidance value. use_cfg_zero (false) applies CFG-Zero-star initialisation, with the arXiv reference right there in the tooltip. guidance_scale (3.5) is the normal Flux guidance.

Leave all three alone unless you know what you're buying: use_real_cfg literally inflates the bill.

Reference-only, and the timestep window

reference_image plus reference_strength (0.65), reference_start (0.0) and reference_end (1.0) is reference-only generation - neither img2img nor full IP-Adapter, and the start/end window is the same idea as ControlNet's "release the condition once composition has formed". There are also six optional fill_image_* sockets for Redux-style fill prompting.

Then the sampling controls: scheduler (euler default), base_shift (0.5), max_shift (1.15) for the timestep schedule, and use_beta_schedule (false). num_images is capped at 1 - the tooltip explains it's fixed for streaming output - and output_format defaults to png here, not jpeg.

Outputs and install

Outputs are the standard set: images, image_paths (in output/fal/fal-ai_flux-general/), timings, has_nsfw_concepts, prompt, seed, and info with the request id, cost estimate, files and fal's full answer.

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis

Restart ComfyUI, or use ComfyUI-Manager → Install via Git URL. Only httpx is declared, for the pack's Codex nodes; the fal nodes use the standard library. No weights touch your disk.

FAL_KEY=your-key-from-fal.ai/dashboard/keys

in the .env next to run_nvidia_gpu.bat (portable) or in your ComfyUI folder. Never a widget - deliberately, so the key can't end up inside an exported workflow.

Money, and the trap

At $0.075/MP a 1024×1024 is ~7.5¢ and a 2048×2048 is ~30¢, and use_real_cfg pushes it higher for the same picture. max_cost_usd (default $20, 0 = no cap) refuses before upload when the estimate is over. reuse_identical_run defaults on, so an unchanged graph returns the file you already paid for - which, on a node this expensive, is a feature you'll appreciate.

The real trap is subtler: a typo in any of those JSON fields fails the run before anything is sent, which is good, but the error comes back as "is not valid JSON" and tells you nothing about what the field expected. Paste the JSON into anything that validates it first.

Categoryarkennemasis/fal/Image/Flux

Inputs (42)

NameTypeDefaultDescription
promptSTRINGThe prompt to generate an image from.
image_sizeCOMBOsquare_hdThe size of the generated image. 'custom' uses the width and height below.
image_size_widthINT102416–14142Width in pixels when image_size is 'custom'.
image_size_heightINT102416–14142Height in pixels when image_size is 'custom'.
num_inference_stepsINT281–50The number of inference steps to perform.
seedINT-1-1–2147483647The same seed and the same prompt given to the same version of the model will output the same image every time. -1 leaves it to the model.
lorasSTRINGThe LoRAs to use for the image generation. You can use any number of LoRAs and they will be merged together to generate the final image. JSON. Empty leaves it out.
control_lorasSTRINGThe LoRAs to use for the image generation which use a control image. You can use any number of LoRAs and they will be merged together to generate the final image. JSON. Empty leaves it out.
controlnetsSTRINGThe controlnets to use for the image generation. Only one controlnet is supported at the moment. JSON. Empty leaves it out.
controlnet_unionsSTRINGThe controlnet unions to use for the image generation. Only one controlnet is supported at the moment. JSON. Empty leaves it out.
ip_adaptersSTRINGIP-Adapter to use for image generation. JSON. Empty leaves it out.
easycontrolsSTRINGEasyControl Inputs to use for image generation. JSON. Empty leaves it out.
guidance_scaleFLOAT3.500–20The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you.
real_cfg_scaleFLOAT3.500–5The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you.
use_real_cfgBOOLEANfalseUses classical CFG as in SD1.5, SDXL, etc. Increases generation times and price when set to be true. If using XLabs IP-Adapter v1, this will be turned on!.
use_cfg_zeroBOOLEANfalseUses CFG-zero init sampling as in https://arxiv.org/abs/2503.18886.
num_imagesINT11–10The number of images to generate. This is always set to 1 for streaming output.
enable_safety_checkerBOOLEANtrueIf set to true, the safety checker will be enabled. Disabling it requires account authorization; unauthorized requests are always checked, and images flagged as unsafe are returned as black images.
reference_strengthFLOAT0.65-3–3Strength of reference_only generation. Only used if a reference image is provided.
reference_startFLOAT0.000–1The percentage of the total timesteps when the reference guidance is to bestarted.
reference_endFLOAT1.000–1The percentage of the total timesteps when the reference guidance is to be ended.
base_shiftFLOAT0.500.01–5Base shift for the scheduled timesteps
max_shiftFLOAT1.150.01–5Max shift for the scheduled timesteps
output_formatCOMBOpngThe format of the generated image.
use_beta_scheduleBOOLEANfalseSpecifies whether beta sigmas ought to be used.
schedulerCOMBOeulerScheduler for the denoising process.
negative_promptSTRINGNegative prompt to steer the image generation away from unwanted features. By default, we will be using NAG for processing the negative prompt. Empty leaves it out.
nag_scaleFLOAT3.001.01–10The scale for NAG. Higher values will result in a image that is more distant to the negative prompt.
nag_tauFLOAT2.50The tau for NAG. Controls the normalization of the hidden state. Higher values will result in a less aggressive normalization, but may also lead to unexpected changes with respect to the original image. Not recommended to change this value.
nag_alphaFLOAT0.250.01–1The alpha value for NAG. This value is used as a final weighting factor for steering the normalized guidance (positive and negative prompts) in the direction of the positive prompt. Higher values will result in less steering on the normalized guidance where lower values will result in considering the positive prompt guidance more.
nag_endFLOAT0.250.01–1The proportion of steps to apply NAG. After the specified proportion of steps has been iterated, the remaining steps will use original attention processors in FLUX.
fill_image_fill_image_1optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
fill_image_fill_image_2optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
fill_image_fill_image_3optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
fill_image_fill_image_4optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
fill_image_fill_image_5optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
fill_image_fill_image_6optIMAGEURLs of images to be filled for redux prompting Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
reference_imageoptIMAGEURL of Image for Reference-Only
max_cost_usdoptFLOAT20.00–100000Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap.
reuse_identical_runoptBOOLEANtrueIf these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings.
extra_jsonoptSTRINGAdvanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally.
max_concurrentoptINT11–32How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed.

Outputs (7)

NameTypeDescription
imagesIMAGE—
image_pathsSTRING—
timingsSTRING—
has_nsfw_conceptsSTRING—
promptSTRING—
seedINT—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.