FLUX.1 [schnell]
The fast, Apache-licensed FLUX
- seedImage
- maskImage
- outpaint
- lora
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
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.
Inputs (39)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024128–2048 | Width of the generated media in pixels. |
| height | INT | 1024128–2048 | Height of the generated media in pixels. |
| seedImageopt | IMAGE | — | |
| maskImageopt | IMAGE | — | |
| outpaintopt | RUNWARE_OUTPAINT | — | |
| loraopt | RUNWARE_LORA | — | |
| ultralyticsopt | RUNWARE_ULTRALYTICS | — | |
| acceleratorOptionsopt | RUNWARE_ACCELERATOROPTIONS | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| seedopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | BOOLEAN | false | Enable to set steps. Off uses the model's default. |
| steps_valueopt | INT | 11–50 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| scheduleropt | COMBO | (default) | Scheduler to use for the diffusion process. |
| CFGScaleopt | BOOLEAN | false | Enable to set CFGScale. Off uses the model's default. |
| CFGScale_valueopt | FLOAT | 0.000–20 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| trueCFGScaleopt | BOOLEAN | false | Enable to set trueCFGScale. Off uses the model's default. |
| trueCFGScale_valueopt | FLOAT | 0.00 | True Classifier-Free Guidance scale. Higher values increase prompt adherence at the cost of quality. |
| strengthopt | BOOLEAN | false | Enable to set strength. This setting has usage rules in this model, so it is off unless you enable it. |
| strength_valueopt | FLOAT | 0.800–1 | Strength of the transformation. Lower values result in more influence from the original input. |
| maskMarginopt | BOOLEAN | false | Enable to set maskMargin. Off uses the model's default. |
| maskMargin_valueopt | INT | 3232–128 | Extra context pixels around the masked region during inpainting. The model zooms into the masked area with these additional pixels for better integration. |
| promptWeightingopt | COMBO | (default) | Syntax used for prompt weighting. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
| advanced_jsonopt | STRING | Optional JSON merged into the request. For: hiresFix |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |