arkennemasis fal · Flux Krea LoRA Image to Image · $0.035/MP
Restyle a photo with a LoRA you'll never download
- image
- images
- image_paths
- timings
- seed
- has_nsfw_concepts
- prompt
- info
Take a picture you already have, push it through a hosted Flux Krea stack with one or more LoRAs attached, get a restyled version back. $0.035 per megapixel. This is the node for "same photo, different treatment" - a film-stock LoRA over a flat phone shot, a product photo pushed toward a studio look, a character render nudged toward a style you trained.
What's on the node
Two things distinguish it from the other LoRA-flavoured Krea nodes: it takes an image socket, it has a strength dial, and - unlike the Krea image-to-image node - it keeps the image_size widgets. That last part is worth knowing, because it means the endpoint is told a size rather than inheriting the input's. Point it at custom and set image_size_width / image_size_height (16–14142, step 16) if you want the output to match your source; the default is square_hd, which will happily crop your 16:9 photo into a square-ish frame if you don't pay attention.
The knobs:
strength, default 0.85 (0.01–1). The tooltip is blunt about the ends: 1.0 completely remakes the image, 0.0 preserves the original. Same warning as always with LoRAs in the mix - high strength plus a strong LoRA is where faces get strange.loras- a JSON string of LoRA entries, each with the weights and a scale, merged together. Empty leaves them out. This isn't a picker of your localmodels/loras; the model is loading them on fal's side, so they need to be reachable from there.prompt- describe the target look. Because a LoRA is doing part of the job, you can keep the prompt short here; "35mm film, warm evening light" is a complete instruction when the LoRA supplies the rest.num_inference_stepsdefault 28 (1–50),guidance_scaledefault 3.5 (0–35),seed(-1 random),num_images1–4,enable_safety_checker,output_format,acceleration.
Below those sit the pack's four shared widgets: max_cost_usd (default 20, checked before anything is uploaded, 0 = off), reuse_identical_run (on - an identical settings-and-pixels run returns the paid files instead of billing again), extra_json, and max_concurrent.
Outputs
images is what you preview or save. image_paths gives the paths under output/fal/fal-ai_flux-krea-lora_image-to-image/. seed returns the seed actually used, so a good restyle is reproducible once you've fixed a number. has_nsfw_concepts and timings are diagnostics, prompt echoes the text that went out, and info carries the request id, cost estimate and fal's full response.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI. Manager users can search comfyui-arkennemasis and let it install; requirements.txt only really wants httpx, and that's for the pack's unrelated Codex nodes, not this one.
Then the key, one line in the .env next to run_nvidia_gpu.bat (portable) or in your ComfyUI folder:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
The node lives under arkennemasis/fal/Image/Flux and has no key field, on purpose.
What goes wrong
Image batched, output not. Sockets are expected to carry a single picture here. If you feed a batch from a loader, slice it with an Image From Batch style node first rather than assuming the endpoint will do something sensible with the whole stack.
"is not valid JSON" on loras. That check runs before upload, so the fix costs you nothing but a minute. JSON means double quotes and no trailing comma.
The square crop. Default image_size is square_hd. If your output framing looks like someone took a cookie cutter to your source, that's why.
Paying twice for the same thing. reuse_identical_run defaults on, so re-queueing with the same picture and settings is free - but it's also why tweaking a LoRA scale by 0.01 gives you a genuinely new billed run. Change something real, or turn the reuse off deliberately when you want a different take.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | square_hd | 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. |
| loras | STRING | The LoRAs to use for the image generation. You can use any number of LoRAs and they will be merged together to generate the final image. JSON. Empty leaves it out. | |
| guidance_scale | FLOAT | 3.500–35 | 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. This is always set to 1 for streaming output. |
| 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 | Acceleration level for image generation. 'regular' balances speed and quality. |
| image | IMAGE | URL of image to use for inpainting. or img2img | |
| strength | FLOAT | 0.850.01–1 | The strength to use for inpainting/image-to-image. Only used if the image_url is provided. 1.0 is completely remakes the image while 0.0 preserves the original. |
| 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 | — |
| has_nsfw_concepts | STRING | — |
| prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |