FLUX.1 Fill [dev]
The Swiss-army editor
- acePlusPlus.images
- seedImage
- maskImage
- outpaint
- lora
- controlNet
- ipAdapters
- pulid
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- acePlusPlus.masks
- image
FLUX.1 Fill [dev] is the inpainting specialist of the FLUX family, and this node wraps it the clever way: through ACE++, a task framework that turns "what do you want done?" into modes. Instead of one inpainting pipeline, you get three - portrait, subject, and local editing - plus a repainting-scale dial that trades identity preservation against prompt adherence. It's the most flexible editing node in the Runware pack, and also the easiest to confuse yourself with.
The model runs on Runware's hardware (runware:102@1), so you get FLUX-quality fills with zero local footprint.
How it works
A taskType: imageInference REST call. The input image(s) ride up as data URIs, and the ACE++ mode (acePlusPlus.type) tells the model what kind of task this is. The classic local ComfyUI "load image + mask + prompt" inpaint path is here too (seedImage, maskImage), so you're not forced into the ACE++ way - you just get both.
Inputs that matter
- acePlusPlus.images - required; the reference image(s). This is the ACE++ socket, distinct from
seedImage. - acePlusPlus.type -
portrait/subject/local_editing. Portrait keeps a face recognizable, subject targets an object, local_editing is free-form region work. Pick per job. - acePlusPlus.repaintingScale - 0–1. The whole interesting dial: 0 preserves original character/identity, 1 surrenders to the prompt. Start around the middle and nudge toward 0 when the edit keeps drifting off the subject.
- acePlusPlus.masks - optional masks for the ACE++ path.
- seedImage / maskImage / outpaint - the classic inpaint/outpaint route, if you prefer it.
- lora / controlNet / ipAdapters / pulid - the full builder socket suite.
pulidis notable: face-ID preservation on top of portrait editing. - layerDiffuse - toggle for transparent-image generation.
- steps / scheduler / CFGScale / strength / maskMargin - the standard diffusion dials, all off-by-default toggles with paired value widgets.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Or ComfyUI Manager → search Runware → Install → restart. API key in ComfyUI Settings → Runware API key or RUNWARE_API_KEY.
Gotchas
- Two input paths (ACE++ vs classic mask) means two ways to get nothing. Pick one: if you're feeding
acePlusPlus.images, configure the ACE++ settings; if you're doing classic inpaint, wireseedImage+maskImageand letacePlusPlus.typesit at its default. - The off-by-default toggles are a deliberate design: values with usage rules start hidden so a default request never violates them. If a setting seems missing, flip its enable toggle first.
advanced_jsonis the escape hatch (documented forhiresFix), and invalid JSON is silently ignored - so check your syntax if a tweak doesn't land.
Fill [dev] is the "one editor for everything" node - portraits, objects, local fixes, even transparent output. The ACE++ modes and repainting scale make it genuinely more capable than a plain inpaint wrapper. Just don't fight it by mixing both input paths.
Inputs (47)
| Name | Type | Default | Description |
|---|---|---|---|
| acePlusPlus.images | IMAGE | — | |
| 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 | — | |
| controlNetopt | RUNWARE_CONTROLNET | — | |
| ipAdaptersopt | RUNWARE_IPADAPTERS | — | |
| pulidopt | RUNWARE_PULID | — | |
| ultralyticsopt | RUNWARE_ULTRALYTICS | — | |
| acceleratorOptionsopt | RUNWARE_ACCELERATOROPTIONS | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| acePlusPlus.masksopt | 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. |
| layerDiffuseopt | BOOLEAN | false | LayerDiffuse for transparent image generation. |
| 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. | |
| acePlusPlus.repaintingScaleopt | FLOAT | 0.000–1 | Balances original character identity (0.0) vs prompt adherence (1.0). Lower values preserve stronger character resemblance. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| acePlusPlus.typeopt | COMBO | portrait | Task mode for ACE++ generation. |
| 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 | — |