arkennemasis fal · Flux Krea LoRA · $0.035/MP
Stack your Civitai downloads onto a model you never download
- images
- image_paths
- timings
- seed
- has_nsfw_concepts
- prompt
- info
Krea's aesthetic plus LoRA support, hosted, $0.035 per megapixel. Node-wise this is the Krea text-to-image endpoint with one extra box - loras - and that box is where all the confusion lives. Everything else behaves exactly like the plain Krea node.
The loras box
It's a multiline string holding JSON, and the tooltip tells you the shape: any number of LoRAs, merged together to make the final image. What it wants is a JSON list of LoRA entries, each naming the weights and a scale - the same convention fal's own API uses. Practically that means a URL to a .safetensors file fal can fetch, plus a strength. Empty leaves it out entirely, which is why the field can sit there harmlessly while you test a prompt.
The gotcha is the one you'd expect from a text field: it's not a dropdown of your local models/loras folder. These are LoRAs fal loads on its side, so your local files are invisible to it unless they're reachable over the internet. The usual pattern is registering them with fal, or pointing at a Civitai/Hugging Face URL. If you paste a local path, nothing happens or you get a request error, and you'll spend ten minutes blaming the prompt.
The rest of the node
prompt- natural language, full sentences.image_size, plusimage_size_width/image_size_heightwhen it's set tocustom(16–14142, step 16).num_inference_stepsdefault 28 (1–50).guidance_scaledefault 3.5, range 0–35 - note that's lower than the plain Krea node's 4.5, which is the LoRA endpoint's own default rather than a mistake.num_images1–4. The tooltip notes this is always 1 for streaming output, so don't plan on four in one call.seed,enable_safety_checker,output_format(jpeg/png),acceleration.
And the four widgets every fal node in this pack carries: max_cost_usd (default $20, caps the run before upload; 0 = off), reuse_identical_run (default on - identical settings and input files return the already-paid results instead of billing again), extra_json (a JSON object merged into the request last, for fal fields this node has no box for), and max_concurrent.
Outputs
images for the preview/save path, image_paths for where it wrote them (output/fal/fal-ai_flux-krea-lora/), plus timings, seed, has_nsfw_concepts, prompt (the echoed prompt) and info (request id, cost estimate, saved files, fal's full answer). That info string is the one to open when something looks odd - it's the only place the actual request id is easy to grab.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Manager users: search comfyui-arkennemasis, or Install via Git URL with the repo URL and let it pull httpx for you. The fal nodes need nothing beyond the standard library, so a manual install works with no pip step at all. Restart ComfyUI, then look under arkennemasis/fal/Image/Flux.
Key setup is one line in the .env beside run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
No key box on the node - the pack reads the file and nowhere else, so setting the variable in your shell won't work.
Troubleshooting
"is not valid JSON". The node validates loras before anything is uploaded, so a trailing comma or single quotes gets you a free, unbilled error. Build the string in a text editor, not by hand-typing brackets.
Nothing changed after adding the LoRA. Either the entry doesn't resolve on fal's side, or the scale is too low to show. Raise the scale before you go hunting for other causes.
Same output twice. That's reuse_identical_run doing its job. Turn it off, or change the seed, when you want a fresh sample for the same settings.
Price creep. $0.035/MP on a custom 1536×1536 (2.25MP) is 2.25× the per-image line on the title, and num_images multiplies on top. The node's live badge has already done that arithmetic for you.
Inputs (16)
| 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. |
| 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. |
| 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. |