Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 2 Klein 9B Base Edit · $0.011/MP
ComfyUI Node

arkennemasis fal · Flux 2 Klein 9B Base Edit · $0.011/MP

The editor with a working negative prompt

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 Klein 9B Base Edit · $0.011/MP
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • images
  • image_paths
  • timings
  • has_nsfw_concepts
  • seed
  • prompt
  • info
◄prompt►
◄negative_prompt►
◄guidance_scale5.00►
◄seed-1►
◄num_inference_steps28►
◄image_sizesquare_hd►
◄image_size_width1024►
◄image_size_height1024►
◄num_images1►
◄accelerationregular►
◄enable_safety_checkertrue►
◄output_formatpng►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

The big undistilled Klein, editing images. It's the most controllable editor in this pack and one of the more expensive: $0.011 per megapixel of input and output, so a 1024×1024 edit with one reference runs about two cents. What you're buying over the distilled edit nodes is that the guidance pass is real - negative_prompt and guidance_scale are live fields here instead of absent ones.

In practice, this is the node for edits where "don't touch the background" has to be an instruction the model can act on, or for sampling from a base-9B LoRA before you take it somewhere else.

What to put in the boxes

prompt - the edit as a command against the file, not a description of a picture. remove blur and noise, fix exposure and color profile, shadow recovery, unsharp mask. Prefer micro-contrast over sharp for skin - it doesn't buy you fake wrinkles and lashes. The failure to avoid is describing the subject, at which point the model reverts to generator mode and gives you a plausible new person.

negative_prompt - the reason this node exists alongside the distilled ones. Whatever must stay put goes here.

guidance_scale - 5. Base Klein lives at 4-5; this isn't a CFG 7 model and pushing it burns the image.

image_1 through image_6 - image_1 required, fal uses the first four, each socket can carry a batch, and they're sent in socket order so the ordering is part of the instruction. Multi-reference editing is what this model is strongest at.

image_size - the tooltip says an unset size falls back to the input image's dimensions, but the widget's default is the square_hd preset, so check which shape you're actually requesting before you blame the model for reframing your photo. custom uses image_size_width / image_size_height.

num_inference_steps - 28 here; 50 is where the community runs base Klein, and since fal bills per megapixel rather than per step, the extra steps only cost seconds. acceleration (none / regular / high) is the base/Dev flavour of the family. seed, num_images, output_format, enable_safety_checker - flagged results come back black rather than erroring.

Outputs

images is the edited IMAGE output (a batch if num_images > 1). image_paths gives you the saved files, timings is fal's timing JSON, has_nsfw_concepts reports the checker's verdict, seed is an INT worth locking on a good edit, prompt echoes the instruction the model received, and info is JSON with the request id, cost estimate, saved files and fal's raw answer.

Install

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

Restart and it's under arkennemasis → fal → Image → Flux; ComfyUI-Manager → Install via Git URL with the same repo works without a terminal. The pack declares one dependency, httpx, and it belongs to its ChatGPT/Codex nodes - the fal nodes talk HTTP through the standard library, so your Python environment doesn't change.

Key in the .env next to run_nvidia_gpu.bat:

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

Where people get burned

A warm cast on the result. Flux 2 edit output drifts slightly warm versus the source, on every variant and every precision. Colour-match against the original when the edit rejoins a sequence.

Identity drift. The family's known weakness, and the reason consistency LoRAs exist. Klein looks better than Qwen-Image-Edit and preserves a face worse - pick your poison rather than expecting both.

Paying for softness. Base isn't the pretty one. If you're just cleaning up a photo for delivery, the distilled edit node a couple of entries up this list is cheaper and better; come here for control.

Identical reruns, no second bill. That's reuse_identical_run, on by default. Turn it off when you want a new sample from the same settings, and set max_cost_usd low while experimenting - the cap is checked before upload, so tripping it costs nothing.

Categoryarkennemasis/fal/Image/Flux

Inputs (22)

NameTypeDefaultDescription
promptSTRINGThe prompt to edit the image.
negative_promptSTRINGNegative prompt for classifier-free guidance. Describes what to avoid in the image. Empty leaves it out.
guidance_scaleFLOAT5.000–20Guidance scale for classifier-free guidance.
seedINT-1-1–2147483647The seed to use for the generation. If not provided, a random seed will be used. -1 leaves it to the model.
num_inference_stepsINT284–50The number of inference steps to perform.
image_sizeCOMBOsquare_hdThe size of the generated image. If not provided, uses the input image size. '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_imagesINT11–4The number of images to generate.
accelerationCOMBOregularThe acceleration level to use for image generation.
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.
output_formatCOMBOpngThe format of the generated image.
image_1IMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_2optIMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_3optIMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_4optIMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_5optIMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_6optIMAGEThe URLs of the images for editing. A maximum of 4 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
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—
seedINT—
promptSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.