Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 2 Klein 4B Base LoRA · $0.016/MP
ComfyUI Node

arkennemasis fal · Flux 2 Klein 4B Base LoRA · $0.016/MP

Text-to-image with your own weights attached

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 Klein 4B Base LoRA · $0.016/MP
    • images
    • image_paths
    • timings
    • has_nsfw_concepts
    • seed
    • prompt
    • info
    ◄prompt►
    ◄negative_prompt►
    ◄guidance_scale5.00►
    ◄seed-1►
    ◄num_inference_steps28►
    ◄image_sizelandscape_4_3►
    ◄image_size_width1024►
    ◄image_size_height1024►
    ◄num_images1►
    ◄accelerationregular►
    ◄enable_safety_checkertrue►
    ◄output_formatpng►
    ◄loras►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    Text-to-image on the un-distilled Klein 4B, with up to three LoRA weights applied on top. It's the companion to the base edit LoRA node: same idea, generation instead of editing. $0.016 per megapixel, which is nearly double the plain 4B base node, so the LoRA has to be earning its keep.

    The honest framing: base Klein is the checkpoint people train against, and this node is how you sample from one of those fine-tunes without owning the hardware to run it. The 4B bases train in about 12GB of VRAM in bf16 and 8GB in int8, which is the most accessible fine-tuning target Black Forest Labs has ever shipped - and it's Apache 2.0, so what you make with it is yours.

    The LoRA box

    loras is a JSON text box, not a dropdown of your local files. That's not laziness on the pack's part: fal has to download the weights itself, so what goes in the box is fal's own LoRA list format - up to three entries - pointing at weights that are reachable by URL rather than sitting in your ComfyUI/models/loras folder. Check the model page for the exact JSON shape. Leave it empty and you get plain base 4B.

    Two rules that will save you a wasted run. Size matters: 4B and 9B LoRAs are not interchangeable, and mixing them produces garbage, not a subtle degradation. Base versus distilled matters: most published Klein LoRAs are trained on a base checkpoint, which is exactly why this node exists rather than a LoRA on the distilled node.

    The inputs

    prompt - sentences with clear ownership and spatial relations. The encoder is a Qwen3 LLM reading a chat turn, and prompt weighting is disabled for it, so tag soup and (emphasis:1.4) both underperform plain language.

    negative_prompt - a field that exists on this node and not on its distilled sibling, because base runs a real guidance pass. Use it for what you don't want; it works here.

    guidance_scale - 5, which is where the community runs base Klein (4-5). num_inference_steps - 28 on the node against the 50 that base really wants, and since fal bills per megapixel rather than per step, raising it costs time and not money.

    acceleration (none / regular / high, default regular), image_size (presets or custom with the width/height boxes), num_images, output_format (png default), enable_safety_checker - flagged renders return black squares rather than errors, and turning it off needs fal account authorisation.

    Outputs

    images is the IMAGE batch, image_paths the saved files as a STRING, timings fal's timing JSON, has_nsfw_concepts the checker's verdict, seed an INT you can lock, prompt the string the model received, and info a JSON blob with the request id, cost estimate, saved files and fal's full answer.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hishamahmer/comfyui-arkennemasis
    

    Restart ComfyUI; the node sits under arkennemasis → fal → Image → Flux. ComfyUI-Manager → Install via Git URL with the same repo is the no-terminal path. The pack's only declared dependency is httpx, for the ChatGPT/Codex half of it - fal needs nothing beyond the standard library.

    Key, in the .env by run_nvidia_gpu.bat:

    FAL_KEY=your-key-from-fal.ai/dashboard/keys
    

    Where people get burned

    Expecting base to look like a finished model. It's a training checkpoint. At low step counts it's soft and the anatomy is worse than the distilled 4B; that isn't a bug, it's what you're paying $0.016/MP for and why most people use it to validate a fine-tune rather than to ship output.

    Wrong-size LoRAs - the single biggest waste of money on nodes like this. Read the LoRA card's base model line before you paste the URL.

    LoRAs that need a trigger word. Many do, and the node won't tell you; if a LoRA seems to do nothing, your prompt is missing its keyword.

    Cached reruns. reuse_identical_run defaults on, so an identical second run comes back from disk instead of being billed again - a nice guard against double-charging, confusing when you wanted variety. max_cost_usd (default $20) is checked before anything is uploaded; set it to a dollar or two while you're experimenting and an over-budget run costs nothing at all.

    Categoryarkennemasis/fal/Image/Flux

    Inputs (17)

    NameTypeDefaultDescription
    promptSTRINGThe prompt to generate an image from.
    negative_promptSTRINGNegative prompt for classifier-free guidance. Describes what to avoid in the image. Empty leaves it out.
    guidance_scaleFLOAT5.000–20Guidance scale for classifier-free guidance.
    seedINT-1-1–2147483647The seed to use for the generation. If not provided, a random seed will be used. -1 leaves it to the model.
    num_inference_stepsINT284–50The number of inference steps to perform.
    image_sizeCOMBOlandscape_4_3The size of the image to generate. '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_imagesINT11–4The number of images to generate.
    accelerationCOMBOregularThe acceleration level to use for image generation.
    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_formatCOMBOpngThe format of the generated image.
    lorasSTRINGList of LoRA weights to apply (maximum 3). JSON. Empty leaves it out.
    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—
    has_nsfw_conceptsSTRING—
    seedINT—
    promptSTRING—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.