Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 2 Flex Edit · $0.05/MP
ComfyUI Node

arkennemasis fal · Flux 2 Flex Edit · $0.05/MP

Multi-reference editing where you set the shape, not the model

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 Flex Edit · $0.05/MP
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • images
  • image_paths
  • seed
  • info
◄prompt►
◄image_sizeauto►
◄image_size_width1024►
◄image_size_height1024►
◄seed-1►
◄safety_tolerance2►
◄enable_safety_checkertrue►
◄output_formatjpeg►
◄guidance_scale3.50►
◄num_inference_steps28►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

The editing tier of Flux 2 with the control knobs left on. Text plus up to four references in, an edited image out, at $0.05 per megapixel of input and output - so a 1024×1024 edit is about a dime. You'd reach for this over the cheaper edit nodes when the instruction is fussy, the typography has to be right, or you need to loosen safety_tolerance below the blunt on/off of the safety checker.

The one setting people get wrong first

image_size defaults to auto on this node, which means the model decides the output shape. That sounds helpful and often isn't: hand it a 4:3 photo and ask for a small change, and "auto" is the model's opinion about framing, not a promise to keep yours. If the edit has to land back in the same frame, set image_size explicitly or use custom with image_size_width / image_size_height. On every other edit node in this family, the default is a preset; here it isn't, and that catches people.

The inputs

prompt - for edits, write it like a post-processing queue rather than a scene description. "Remove blur and noise, fix exposure, unsharp mask, micro-contrast" gets you a cleaned file; a paragraph about the woman on the beach gets you a new woman on a beach. When something absolutely must survive, name it: maintain the faces, maintain the posture.

image_1 through image_6 - sockets. image_1 is required; fal uses the first four, each socket can carry a batch, and they're ordered by socket position, so where you plug things in is part of the instruction.

num_inference_steps (28), guidance_scale (3.5), safety_tolerance (1-5, default 2), enable_safety_checker (a flagged image comes back black), seed (-1), num_images, and output_format - jpeg by default on this endpoint, which is worth changing to png if anything downstream will edit the result again.

Cost, plainly

Input plus output, rounded up, at $0.05/MP. Inputs are resized to 1MP, so attaching four references doesn't multiply the bill - it's 1MP of input either way. A 1024×1024 edit from any number of references is roughly $0.10, and num_images is what turns that into a bigger number. Compare that to the plain edit node in this pack at about two cents for the same job; you're paying for the knobs and the text rendering.

Outputs

images is the edited IMAGE output. image_paths is the saved location as a string. seed is an INT, so a good take is reproducible. info is a JSON string with the request id, cost estimate, saved files and fal's full response - and this node stops there. There's no timings and no has_nsfw_concepts output on the Flex pair, unlike the other Flux 2 nodes.

Install

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

Restart, and it's under arkennemasis → fal → Image → Flux. Or ComfyUI-Manager → Install via Git URL with the same repo. The pack's requirements.txt is a single httpx line for its Codex nodes; the fal nodes run on the standard library, so there's nothing to pip install for this one.

Key in the .env next to run_nvidia_gpu.bat:

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

Where people get burned

Identity and detail drift. Flux 2 editing looks better than the alternatives and holds a face worse than Qwen-Image-Edit does. If a character has to survive the edit, that's the known weak spot - the ecosystem's answer is a consistency LoRA, and the pack has LoRA variants of the Klein nodes for exactly this kind of work.

The warm shift. Edited output comes back slightly warmer than the source, consistently. If you're cutting edits into a sequence next to untouched shots, match the colour back.

Rounding up. 0.3MP renders at the same price as 1MP ones, so don't use this endpoint for throwaway tests.

Repeated reruns returning cached files - reuse_identical_run, on by default, serving the same result from output/fal instead of charging again. Turn it off for a genuinely new take. And keep max_cost_usd sane while you dial things in; the estimate is checked before upload, so a run that hits the cap costs nothing.

Categoryarkennemasis/fal/Image/Flux

Inputs (20)

NameTypeDefaultDescription
promptSTRINGThe prompt to generate an image from.
image_sizeCOMBOautoThe size of the generated image. If `auto`, the size will be determined by the model. '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'.
seedINT-1-1–2147483647The seed to use for the generation. -1 leaves it to the model.
safety_toleranceCOMBO2The safety tolerance level for the generated image. 1 being the most strict and 5 being the most permissive.
enable_safety_checkerBOOLEANtrueWhether to enable the safety checker. Disabling it requires account authorization; unauthorized requests are always checked.
output_formatCOMBOjpegThe format of the generated image.
image_1IMAGEList of URLs of input images for editing Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
guidance_scaleFLOAT3.501.5–10The guidance scale to use for the generation.
num_inference_stepsINT282–50The number of inference steps to perform.
image_2optIMAGEList of URLs of input images for editing Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_3optIMAGEList of URLs of input images for editing Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_4optIMAGEList of URLs of input images for editing Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_5optIMAGEList of URLs of input images for editing Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_6optIMAGEList of URLs of input images for editing 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 (4)

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