arkennemasis fal · Flux 2 Max Edit · $0.07 + $0.03/MP
Multi-reference editing at the top of the price list
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- images
- image_paths
- seed
- info
The editing half of the Max tier: same flagship model, an image_1 socket, and pricing that counts your inputs as processed megapixels. $0.07 for the first, $0.03 for each additional. It's the most expensive node in this pack's Flux 2 range, and the reason to pay it is multi-reference consistency - the one capability the community concedes nothing local matches, at least not at this quality.
What it does
A wrapper over fal-ai/flux-2-max/edit: your reference images are uploaded to fal's CDN, the job goes to fal's queue, and the results land in output/fal/fal-ai_flux-2-max_edit/. No local model, no ControlNet, no loops - one call, one billed result set.
Like the rest of the Max tier, it hands you almost no knobs: no step count, no guidance scale, no num_images. That's the tier's pitch, and it cuts both ways - fewer ways to get it wrong, and no way to trade quality for speed when you're iterating.
Inputs
prompt is the edit instruction. Flux 2 responds best to commands on the file rather than scene descriptions: "remove the laptop from the desk", "zoom out until the full shoes are visible. Maintain the faces." Describe the subject and the model reinvents it.
image_1 is required; sockets run to image_6, and per the tooltip each socket may carry a batch, sent in socket order. Multi-reference conditioning is where Flux 2's reputation lives - character plus object plus style in one generation, without fine-tuning. If you're feeding several references, send them deliberately: the first picture of socket 1 is number 1.
image_size defaults to auto on this node, which means the model decides the output shape based on what you fed it - a nicer default than the Klein nodes' fixed square_hd, and the right one for editing. custom hands you image_size_width and image_size_height if you need to pin the shape. seed at -1 randomises.
output_format defaults to jpeg. For an edit you plan to grade or re-edit, set png. safety_tolerance is a 1–5 combo, 1 strictest and 5 most permissive, default 2, with enable_safety_checker alongside; the tooltip is explicit that disabling the checker requires fal account authorisation.
The standard four: max_cost_usd (default $20, 0 = off) stops the run before upload when the estimate exceeds it - here that pre-flight check is the most valuable field on the node, since a 4MP request with three references is over half a dollar; reuse_identical_run fingerprints settings and the bytes of your pictures so an exact repeat is free; extra_json injects fal fields with no box on the node; max_concurrent (default 1) serialises paid fal calls.
Outputs
images and image_paths for the graph and the disk, seed for reproducibility, and info - the JSON with request id, estimate, saved files and fal's full answer. Note this node's output set is slimmer than the Klein editors': no timings, no has_nsfw_concepts, no prompt passthrough.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, and put the key in the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
No pip step for the fal nodes - standard library only.
Where people get burned
The bill, because inputs count: a 2MP reference plus a 2MP output is four processed megapixels, so $0.07 + three times $0.03 = $0.16 for a single image. Four references and a large output gets you toward half a dollar per attempt, and there is no batch option to spread that across.
Second: no dials. If an edit comes back wrong you can change the prompt, the seed, the size or the references - that's the entire surface. Third: the same identity caveat as every Flux editor. Max is strong on composition and multi-reference work, but if the requirement is that a specific face survives untouched, a dedicated identity-preserving edit model is the more reliable call, even though it looks less impressive on a test shot.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | auto | The size of the generated image. If `auto`, the size will be determined by the model. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| seed | INT | -1-1–2147483647 | The seed to use for the generation. -1 leaves it to the model. |
| safety_tolerance | COMBO | 2 | The safety tolerance level for the generated image. 1 being the most strict and 5 being the most permissive. |
| enable_safety_checker | BOOLEAN | true | Whether to enable the safety checker. Disabling it requires account authorization; unauthorized requests are always checked. |
| output_format | COMBO | jpeg | The format of the generated image. |
| image_1 | IMAGE | List 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_2opt | IMAGE | List 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_3opt | IMAGE | List 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_4opt | IMAGE | List 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_5opt | IMAGE | List 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_6opt | IMAGE | List 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_usdopt | FLOAT | 20.00–100000 | Safety 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_runopt | BOOLEAN | true | If 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_jsonopt | STRING | Advanced: 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_concurrentopt | INT | 11–32 | How 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)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |