ComfyUI Node

Bria FIBO Edit

Iterative image editing the way FIBO was meant to be used

By Runware·Created 2 years ago·Updated about a month ago· 140
Bria FIBO Edit
  • image
  • advancedFeatures.watermark.image
  • mask
  • image
positivePrompt
negativePrompt
seed1
steps50
CFGScale5
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
providerSettings.bria.ipSignalfalse
safetyfalse
safety.checkContentfalse
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

The interesting part of Bria FIBO was never text-to-image. It's that the model was trained on long structured captions specifically so you could go back and edit one attribute of a generated image - change the lighting, swap the framing, age the subject - without regenerating everything else. This node is that feature, packaged: you hand it an image, tell it what to change, and get an edited image back. And because it runs on Runware's cloud, you don't need the 16 GB transformer sitting in your models folder to do it.

This is also where the mask-based editing story still matters. The 2026 inpainting discourse has mostly moved to instruction-editing models - describe the fix, get a whole new image - because they're easier, and the catch is that unmasked regions drift a little on every pass. A mask pins the edit down so everything outside the region stays put. That's the exact job this node's optional mask input is for.

Inputs that matter

  • image - required IMAGE. Your starting point.
  • positivePrompt - required, multiline. Describe what to change. FIBO's long-caption training means it handles specific, structured edit instructions better than a model that only ever saw "a cat."
  • mask - optional, and note the type: it's IMAGE, not the usual MASK. You'll often generate a mask with a segmentation or draw-it-yourself node and feed it as an image. It tells the model where the edit is allowed to happen, which is your defense against the whole image getting re-lit.
  • steps (20–50), CFGScale (only 3/4/5 - FIBO is a low-guidance model, the node won't let you overshoot), seed, numberResults. Same family as the plain FIBO node.

Output is a single IMAGE socket. Into Preview Image or Save Image, as usual. If you're iterating - generate, edit, edit again - just feed this node's output back into its own image input next time. That loop is the whole workflow, and it's one of the few places in ComfyUI where an edit chain doesn't feel like you're wrestling the graph.

Install

Same pack as the rest of these: ComfyUI Manager → search Runware, or

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

Restart, then set your Runware API key in Settings → Runware API key (or RUNWARE_API_KEY). No models to download - the request goes to Runware's servers and comes back as a native IMAGE tensor. Costs print on the node's title bar after each run, and numberResults is where the bill multiplies, so keep it at 1 while you're iterating.

The gotcha

Remember the license before you ship anything: FIBO weights and code are under a non-commercial Creative Commons license, and Bria got flak for calling it open source. For personal use, none of that matters and this node is genuinely the smoothest way to do targeted edits on the cloud. For a commercial product, check the terms before you build your pipeline on it.

CategoryRunware/Image/bria

Inputs (23)

NameTypeDefaultDescription
imageIMAGE
positivePromptSTRINGText prompt describing elements to include in the generated output.
advancedFeatures.watermark.imageoptIMAGE
maskoptIMAGE
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
seedoptINT11–2147483647Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
stepsoptINT5020–50Total number of denoising steps. Higher values generally produce more detailed results but take longer.
CFGScaleoptCOMBO5Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
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.
providerSettings.bria.ipSignaloptBOOLEANfalseFlag potential IP-related content in prompt or output.
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.

Outputs (1)

NameTypeDescription
imageIMAGE