ComfyUI Node

FLUX.1 [schnell]

The fast, Apache-licensed FLUX

By Runware·Created 2 years ago·Updated about a month ago· 140
FLUX.1 [schnell]
  • seedImage
  • maskImage
  • outpaint
  • lora
  • ultralytics
  • acceleratorOptions
  • advancedFeatures.watermark.image
  • image
positivePrompt
width1024
height1024
negativePrompt
seed0
stepsfalse
steps_value1
scheduler(default)
CFGScalefalse
CFGScale_value0.00
trueCFGScalefalse
trueCFGScale_value0.00
strengthfalse
strength_value0.80
maskMarginfalse
maskMargin_value32
promptWeighting(default)
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
safetyfalse
safety.checkContentfalse
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95
advanced_json

FLUX.1 [schnell] is the younger, faster sibling of FLUX.1 [dev], and in the Runware pack it's the budget pick for good reason. "Schnell" is German for "fast," and it's the distilled tier of the 12B family: designed to run in a handful of steps instead of the 20-50 the base model wanted. In the cloud, where you pay per generation, that's not just speed - it's the difference between a fraction of a cent per image and, well, a slightly bigger fraction of a cent. Runware's own numbers put FLUX Schnell at thousands of images per $10. It's genuinely the cheapest serious-quality image generation this pack offers.

There's a second reason people pick schnell over dev, and it's not about speed at all: licensing. Schnell is Apache 2.0, the permissive tier of the FLUX family, while dev is non-commercial. If you're doing anything commercial - freelance, product shots, monetized content - schnell is the FLUX you're allowed to use. The trade is the usual distillation deal: fewer steps means less refinement, so detail and prompt adherence trail dev slightly. For iteration-heavy work, that's the right trade.

What you set

The essentials are positivePrompt, width, and height (128–2048, step 64). After that, the settings are almost identical to dev, and the same guidance advice applies:

  • CFGScale - off by default and should stay off. Schnell is distilled; the guidance is baked in.
  • trueCFGScale - the real CFG knob if the model ignores you.
  • steps - the whole point here is few steps. The default already handles this; adding steps buys little on a distilled model.
  • seed, scheduler, numberResults (up to 20), negativePrompt (ignored at CFGScale ≤ 1) - all familiar.

Missing from schnell versus dev: no layerDiffuse (no transparent PNGs here) and no controlNet/pulid sockets - you get lora, ipAdapters, ultralytics, and the standard seedImage/maskImage inputs. That's fine, because you're not reaching for schnell when you need surgical control; you're reaching for it when you need 50 variations fast and cheap.

Output is image (IMAGE), straight into Preview Image or Save Image.

How it works

Same pack machinery as every Runware node: build a request with the model AIR and taskType, send it over REST, download the finished IMAGE back. The node's title bar shows cost per run, and with schnell it's the rare model where the number genuinely looks like a rounding error. You'll never load the 12B model locally, never manage the T5 encoder, never wonder if your VRAM fits it - the cloud does all of it.

Installing

ComfyUI Manager → search Runware → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Dependencies are light (runware-sdk, pillow, soundfile), no model downloads. You need a Runware API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Troubleshooting

Same pack gotchas: no key means the "No Runware API key" error, so set that first. If images look muddier than dev, that's the distillation tax, not a misconfiguration - you can nudge trueCFGScale up a touch if you must, but don't expect dev's crispness at schnell's price.

CategoryRunware/Image/runware

Inputs (39)

NameTypeDefaultDescription
positivePromptSTRINGText prompt describing elements to include in the generated output.
widthINT1024128–2048Width of the generated media in pixels.
heightINT1024128–2048Height of the generated media in pixels.
seedImageoptIMAGE
maskImageoptIMAGE
outpaintoptRUNWARE_OUTPAINT
loraoptRUNWARE_LORA
ultralyticsoptRUNWARE_ULTRALYTICS
acceleratorOptionsoptRUNWARE_ACCELERATOROPTIONS
advancedFeatures.watermark.imageoptIMAGE
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
stepsoptBOOLEANfalseEnable to set steps. Off uses the model's default.
steps_valueoptINT11–50Total number of denoising steps. Higher values generally produce more detailed results but take longer.
scheduleroptCOMBO(default)Scheduler to use for the diffusion process.
CFGScaleoptBOOLEANfalseEnable to set CFGScale. Off uses the model's default.
CFGScale_valueoptFLOAT0.000–20Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
trueCFGScaleoptBOOLEANfalseEnable to set trueCFGScale. Off uses the model's default.
trueCFGScale_valueoptFLOAT0.00True Classifier-Free Guidance scale. Higher values increase prompt adherence at the cost of quality.
strengthoptBOOLEANfalseEnable to set strength. This setting has usage rules in this model, so it is off unless you enable it.
strength_valueoptFLOAT0.800–1Strength of the transformation. Lower values result in more influence from the original input.
maskMarginoptBOOLEANfalseEnable to set maskMargin. Off uses the model's default.
maskMargin_valueoptINT3232–128Extra context pixels around the masked region during inpainting. The model zooms into the masked area with these additional pixels for better integration.
promptWeightingoptCOMBO(default)Syntax used for prompt weighting.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.
advanced_jsonoptSTRINGOptional JSON merged into the request. For: hiresFix

Outputs (1)

NameTypeDescription
imageIMAGE