Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux Krea LoRA Image to Image · $0.035/MP
ComfyUI Node

arkennemasis fal · Flux Krea LoRA Image to Image · $0.035/MP

Restyle a photo with a LoRA you'll never download

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux Krea LoRA Image to Image · $0.035/MP
  • image
  • images
  • image_paths
  • timings
  • seed
  • has_nsfw_concepts
  • prompt
  • info
◄prompt►
◄image_sizesquare_hd►
◄image_size_width1024►
◄image_size_height1024►
◄num_inference_steps28►
◄seed-1►
◄loras►
◄guidance_scale3.50►
◄num_images1►
◄enable_safety_checkertrue►
◄output_formatjpeg►
◄accelerationnone►
◄strength0.85►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

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 local models/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_steps default 28 (1–50), guidance_scale default 3.5 (0–35), seed (-1 random), num_images 1–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.

Categoryarkennemasis/fal/Image/Flux

Inputs (18)

NameTypeDefaultDescription
promptSTRINGThe prompt to generate an image from.
image_sizeCOMBOsquare_hdThe size of the generated image. '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'.
num_inference_stepsINT281–50The number of inference steps to perform.
seedINT-1-1–2147483647The 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.
lorasSTRINGThe 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_scaleFLOAT3.500–35The 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_imagesINT11–4The number of images to generate. This is always set to 1 for streaming output.
enable_safety_checkerBOOLEANtrueIf 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_formatCOMBOjpegThe format of the generated image.
accelerationCOMBOnoneAcceleration level for image generation. 'regular' balances speed and quality.
imageIMAGEURL of image to use for inpainting. or img2img
strengthFLOAT0.850.01–1The 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_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 (7)

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