FLUX.2 [flex]
The Cheap, Fast Tier of the New Flux
- referenceImages
- advancedFeatures.watermark.image
- image
FLUX.2 is Black Forest Labs' second act, and [flex] is its value tier - the answer to "I want the new Flux quality without the flagship price tag or the GPU to run the 32B dev model." Like the whole FLUX.2 line, it does text-to-image and reference-based editing in one model. Unlike the open dev tier, flex is a hosted product with no weights to speak of, which is why this Runware node is the straightforward way in: prompt it, and a native IMAGE comes back from BFL's cloud.
The thing to know about flex is what it trades away. It's the distilled, fast, budget flavor - cheaper per generation and quicker to render, at a modest quality cost versus the pro tier. If you're doing high-volume iteration, sketching concepts, or A/B testing prompts, that's flex's whole reason to exist. The node even exposes a narrower CFG range (1.5–5, default 2.5) because the flex model lives in the low-guidance, flow-matching world where cranking CFG just overcooks things.
What you set
Required: positivePrompt, width, height (256–2048, stepped by 16). Then:
- referenceImages - for the single-reference editing FLUX.2 is known for. This is the feature that separates the line from plain txt2img.
- steps - a toggle (flip it on) with
steps_value; off means the model's default. Distilled models like this one are happiest at few steps, so don't fight it. - CFGScale - plain float, 1.5–5, default 2.5. Low and happy.
- providerSettings.bfl.promptUpsampling - BFL's automatic prompt expansion. Flip it on for a quality lift on weak prompts.
- providerSettings.bfl.safetyTolerance - 0–5 moderation tolerance, default 2. The dial you reach for when a legit prompt gets refused.
Output is one image. The usual output plumbing (outputFormat, outputQuality, numberResults up to 20) is there.
How it fits
Think of flex as your volume tier in a multi-tier setup: generate variations cheaply on flex, then promote the winners to the pro tier or a local edit pass for the hero shot. Because it's a cloud node there's no VRAM floor - flex at 2048px just works where a local FLUX.2 would need a serious card. If you've ever burned an hour tiling a local upscale, flex at native resolution is a genuinely nicer workflow.
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, or install "Runware" via ComfyUI Manager; API key in Settings → Runware API key or RUNWARE_API_KEY. Every run bills the account - the title bar shows cost - and that's the one gotcha that matters: flex is the cheap tier, not the free tier, and numberResults of 20 is still twenty billed generations in a single queue.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024256–2048 | Width of the generated media in pixels. |
| height | INT | 1024256–2048 | Height of the generated media in pixels. |
| referenceImagesopt | IMAGE | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| 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. |
| CFGScaleopt | FLOAT | 2.501.5–5 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| 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. | |
| providerSettings.bfl.promptUpsamplingopt | BOOLEAN | false | Enable automatic enhancement and expansion of the input prompt. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| providerSettings.bfl.safetyToleranceopt | INT | 20–5 | Tolerance level for content moderation. Lower values are stricter; higher values are more permissive. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |