arkennemasis fal · Flux 2 LoRA Gallery Realism · $0.021/MP
The photorealism switch that only goes one way
- images
- image_paths
- seed
- prompt
- info
Photorealism in 2026 stopped being a base-model problem and became a LoRA problem. The base got good enough that the last mile - skin that isn't plastic, light that behaves, that slightly imperfect snapshot feel - is what people stack LoRAs for. fal sells one of those as an endpoint: Flux 2 plus a realism LoRA, $0.021 per megapixel, and this pack wraps it as a node with the strength exposed.
What it does
Text-to-image only. There's no image socket, so it doesn't "make your photo realistic" - it generates a photographically plausible image from your prompt. The node submits to flux-2-lora-gallery/realism, polls fal's queue, and saves into output/fal/fal-ai_flux-2-lora-gallery_realism/.
The dial that matters is lora_scale (0–2, default 1): the strength of the realism effect. In practice you'll run it at or slightly above 1 for portraits, and lower when the effect starts stripping contrast out of a deliberately stylised shot.
Inputs
prompt is where this node is won or lost. The KB's guidance for LLM-encoded models applies exactly: describe the photograph, not the image. Camera, lens, light direction, what the subject is doing - "a candid 35mm photo of a woman laughing in a kitchen, window light from the left, slight motion blur". Tags and (word:1.4) weighting do nothing on a Flux 2 encoder, and "best quality, ultra detailed" is tokens taken from your actual description.
guidance_scale (0–20, default 2.5) is adherence; num_inference_steps defaults to 40 and runs 4–50. acceleration (none / regular) buys speed. image_size defaults to landscape_4_3 with the usual presets and custom - set it to match the camera you're pretending to shoot, since aspect ratio is half of what sells a photo. num_images (1–4) batches in one paid call; realistic portraits have a hit rate, so four and pick is the right pattern. seed at -1 randomises, output_format defaults to png, the safety checker returns black on a flag.
Then the pack-wide four: max_cost_usd ($20 default) blocks an over-budget run before upload, reuse_identical_run returns an identical paid result for free, extra_json merges raw JSON for fields without a box, max_concurrent (default 1) serialises paid fal calls.
Outputs
images, image_paths, seed, prompt, info. Nothing exotic - but info is worth opening, since it carries the request id, cost estimate, saved files and fal's full response.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then add the key to the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
No pip install - the fal provider is standard library only.
Where people get burned
Here's the thing about a hosted realism LoRA: on your own machine you'd stack it with a skin LoRA and a snapshot LoRA on a base that takes it - the KB's highest-scoring realism recipe of 2026 is exactly that, three LoRAs on Klein 9B. This endpoint gives you one fixed LoRA and no stacking. It's a good default, not the state of the art.
Second: the endpoint inherits Flux 2's weaknesses. Anatomy and hands are the usual complaint, and realism LoRAs make bad anatomy more conspicuous because skin and texture now look real. Prompt for framing that keeps hands out of shot, or accept the re-rolls. Third, cost - $0.021 a megapixel adds up quicker in portrait work than landscape work, because you're generating batches to pick one from. Set max_cost_usd somewhere meaningful and let it stop you before you've spent ten dollars looking for a face.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate a realistic image with natural lighting and authentic details. | |
| 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'. |
| guidance_scale | FLOAT | 2.500–20 | The CFG (Classifier Free Guidance) scale. Controls how closely the model follows the prompt. |
| num_inference_steps | INT | 404–50 | The number of inference steps to perform. |
| acceleration | COMBO | regular | Acceleration level for image generation. 'regular' balances speed and quality. |
| seed | INT | -1-1–2147483647 | Random seed for reproducibility. Same seed with same prompt will produce same result. -1 leaves it to the model. |
| enable_safety_checker | BOOLEAN | true | Whether to enable the safety checker for the generated image. Disabling it requires account authorization; unauthorized requests are always checked. |
| output_format | COMBO | png | The format of the output image |
| num_images | INT | 11–4 | Number of images to generate |
| lora_scale | FLOAT | 1.000–2 | The strength of the realism effect. |
| 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 (5)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |