arkennemasis fal · Flux Dev · $0.025/MP
The node you use when the batch is bigger than your afternoon
- images
- image_paths
- timings
- seed
- prompt
- has_nsfw_concepts
- info
FLUX.1 [dev] is the 12B model that displaced SDXL within months of its August 2024 release, and it's still the most predictable thing in open image generation. The launch-thread reaction was "What the fuck. It's insanely good", the prompt adherence has held up across two model generations, and its known weaknesses are equally well documented: a slightly plastic base look, and hands that multiply when a full body fits in frame.
You can run it locally. That's the thing about this node - it isn't the only way to reach Flux Dev, or the cheapest over a week of heavy use. It's what you reach for when you want 200 images rendered while you do something else, or when the machine you're on has no usable GPU at all. $0.025 per megapixel: about two and a half cents an image at 1024×1024.
Is hosted worth it here?
Compare honestly. Locally, Flux Dev is free after electricity and you own the loop. On fal, you're paying per image and your prompt goes to someone else's server - that's the shape of every API node in ComfyUI, and it's the reason a lot of people who could run this locally still wouldn't.
Where the hosted version wins: batching a client's list overnight from a laptop, handing a workflow to a colleague without a 4090, and the fact that the endpoint's settings are the model author's own rather than the ones you guessed at 1am. Where it loses: iteration. Twenty quick test renders on your own card cost nothing; the same twenty here cost fifty cents, which is nothing too, but the round trip is the tax.
The settings
prompt - plain sentences. Flux's T5-derived encoder wants natural language, not tag soup.
guidance_scale defaults to 3.5, and it's Flux guidance, not CFG. The distinction bites people constantly: applying SDXL's CFG logic here doubles generation time by running the model twice, which isn't what this parameter does. Higher guidance (5–8) buys prompt adherence at the cost of that plastic sheen; 3.5 is the community's settled number.
num_inference_steps defaults to 28 - the launch-era convention landed at 20–30, so leave it. seed at -1 for a random draw; pin it when you're comparing prompt versions against a fixed composition. image_size is a combo (landscape_4_3 default, custom with image_size_width / image_size_height), num_images goes up to 4 in one call, output_format defaults to jpeg here.
acceleration defaults to none and is the field people miss. It's a speed setting - the higher you push it, the faster the generation. It's the difference between a four-second render and a considerably quicker one, worth trying when you're exploring and worth leaving alone when you're delivering.
enable_safety_checker stays on; disabling it needs authorization from fal at the account level, and unauthorised requests get checked regardless.
Outputs
images and image_paths (files in output/fal/fal-ai_flux_dev/) for the pipeline, then the diagnostics: timings, seed, prompt, has_nsfw_concepts, and info - request id, cost estimate, saved files and fal's complete answer as JSON.
Keep seed and prompt wired somewhere. When you land a good one, those two strings are the only way back to it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, or use ComfyUI-Manager → Install via Git URL. The pack declares exactly one dependency, httpx, and it exists for the Codex nodes; the fal provider needs nothing beyond Python's standard library. No checkpoints, no VAE, no 12GB download - the model is on fal's side.
FAL_KEY=your-key-from-fal.ai/dashboard/keys
goes in the .env next to run_nvidia_gpu.bat (portable build) or in your ComfyUI folder. There is no key field on the node. That's deliberate: a key in a widget gets written into every workflow JSON you share.
The gotchas
reuse_identical_run is on by default, and on this node it's a feature you'll notice immediately. Re-queue an unchanged graph and you get the cached file back with nothing billed - great when you're re-running a workflow to test the rest of the graph, startling when you were clicking Queue for a fresh random image. Turn it off for that.
Estimate your batch: four images at 1536×1536 is roughly nine megapixels, about 22¢ per queue. max_cost_usd (default $20) checks that estimate before anything is uploaded, and the node's price badge shows the number as you change settings.
One last honest note on licensing. FLUX.1 [dev] ships under BFL's non-commercial licence, and the v2.0 revision covers "FLUX.x [dev]" including Fill, Canny, Depth, Redux and Kontext. If you're generating for a client, that's your problem to settle before you deliver, not fal's - read the current licence rather than relying on a forum summary.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | landscape_4_3 | The size of the generated image. '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'. |
| num_inference_steps | INT | 281–50 | The number of inference steps to perform. |
| seed | INT | -1-1–2147483647 | The 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. |
| guidance_scale | FLOAT | 3.501–20 | The 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. |
| num_images | INT | 11–4 | The number of images to generate. |
| enable_safety_checker | BOOLEAN | true | If 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_format | COMBO | jpeg | The format of the generated image. |
| acceleration | COMBO | none | The speed of the generation. The higher the speed, the faster the generation. |
| 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 (7)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| timings | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| has_nsfw_concepts | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |