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

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

The node you use to preview a fine-tune, not to make pretty pictures

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 Klein 4B Base · $0.009/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►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    Klein shipped as four checkpoints, and the one thing the internet got wrong for weeks is that "base" isn't a bigger or better version of "distilled" - it's the un-distilled one. Base means the model still needs real classifier-free guidance and 50-ish steps to do its job. Its whole reason to exist is training: it's the target that most published Klein LoRAs are trained against.

    So this node has an honest use and a dishonest one. The dishonest one is treating it as a better Klein 4B for generation - Black Forest Labs say it plainly, base "is not intended for image generation as the quality isn't as good as the distilled normal model." The honest one is running a base-tuned LoRA at inference, or checking what a base fine-tune does before you commit an overnight training run.

    The inputs

    prompt - sentence-style, because the encoder is a Qwen3 LLM reading a chat turn. Tag weighting does nothing here.

    negative_prompt - note this field exists on the base node and not on the distilled 4B sibling. That's the distillation story in one line of UI: base runs a real unconditional pass, so a negative prompt has something to push against. Use it.

    guidance_scale - 5 by default. The community number for base Klein is 4-5, so fal's default is in the sane band; unlike the distilled variants there is no "keep it near 1" rule here.

    num_inference_steps - 28 on the node, against the 50 steps people actually run base Klein at. Fal bills per megapixel, so extra steps cost seconds and not cents.

    acceleration - none / regular / high, defaulting to regular. This is the base-and-Dev flavour of the family; the distilled nodes don't have it.

    image_size - presets with landscape_4_3 as the default, or custom plus image_size_width / image_size_height. One megapixel is the natural point.

    num_images, output_format, enable_safety_checker - the last one flags rather than errors: a refused render comes back black, and switching it off needs authorisation on your fal account.

    Outputs

    images (IMAGE, batch if num_images > 1), image_paths (the saved files as a STRING), timings, has_nsfw_concepts, seed (INT), prompt (STRING), and info - JSON with the request id, cost estimate, saved files and fal's raw answer.

    Install

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

    Restart, then look under arkennemasis → fal → Image → Flux. ComfyUI-Manager → Install via Git URL with the same repo works too. The pack declares exactly one dependency, httpx, and that's for its ChatGPT/Codex nodes; fal runs on the standard library, so this node adds nothing to your environment.

    Key in the .env next to run_nvidia_gpu.bat:

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

    Where people get burned

    Comparing base and distilled at the same settings. They're different models with different habits. If you run base at 4 steps because that's what the distilled node defaults to, you'll conclude base is broken. It isn't; it just hasn't been taught to skip.

    Thinking it's the licensed one. Both 4B checkpoints are Apache 2.0 - the commercially usable tier of Flux 2. That's why 4B base is the smart foundation if you ever intend to train something you can ship, which is a road almost nobody has taken.

    Forgetting this is still a 4B model. Base fixes the distillation artefacts, not the ceiling: detail and prompt comprehension are 9B territory, and the anatomy reputation is shared across the line.

    Paying twice for the same render. reuse_identical_run defaults on, so identical inputs with the files still in output/fal are returned rather than re-billed. Flip it off when you want a fresh take. And if a run halts before uploading, that's max_cost_usd (default $20) doing its job before the paid call.

    Categoryarkennemasis/fal/Image/Flux

    Inputs (16)

    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.
    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.