Runware Outpaint
Outpaint — extend the canvas, let the model invent what's beyond the edge
- outpaint
Outpainting is the inverse of inpainting: instead of replacing what's inside a masked region, you extend the canvas outward and let the model fill in everything beyond the original edges. It's how a 1024×1024 portrait becomes a 1792×1024 wide shot, or a square becomes a phone wallpaper - the model has to invent plausible continuation (more wall, more sky, more room) while keeping what's already there untouched. This builder is the Runware version: set how many pixels to add on each side, get a RUNWARE_OUTPAINT value, and wire it into any model node in the pack that exposes an outpaint socket (about 16 of them do).
The inputs
- top / bottom / left / right - each is a boolean gate paired with a
_valuepixel count. Fliplefton and setleft_valueto 256, and you extend 256 pixels to the left. Same pattern for the other three sides. Any side you leave gated off just isn't extended. This is the pack's off-by-default gate convention in its purest form: "off" means the model uses its default, i.e. no extension on that side. - blur (+
blur_value, 0–32) - the mask-edge blur, in pixels. This is the seam softener: a little blur tells the generation to blend the new content into the old edge so you don't get a hard line where the canvas grew. A few pixels is usually enough; more if the model is visibly stitching.
What to do with it
Think in terms of the whole workflow, not the pixels alone. Outpainting a composition means two jobs happen at once: the model extends the image, and your prompt on the model node tells it what the extended space should be. Set the sides you want extended, then prompt for the continuation - "the same living room, more couch on the right." The KB's inpainting essay is the useful context here: outpaint still beats full-image edit models at one specific job, which is leaving the existing pixels alone. An edit model regenerates everything and drifts; outpaint only touches the new canvas. That's the whole reason this node exists in 2026.
Output and wiring
Output is RUNWARE_OUTPAINT. Wire it into a model node's outpaint socket alongside your prompt and image.
Install
Same pack install, once:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, add your Runware API key (Settings → Runware API key, or RUNWARE_API_KEY).
The honest take
This is a small, well-scoped builder and there's not much to get wrong - the only real failure mode is forgetting the blur and wondering why your extension has a visible seam. One genuinely useful tip: extend in steps rather than all at once. Adding 512 pixels in one jump is asking the model to invent a lot of plausible room at once; two 256-pixel passes give it a chance to build on what it just made. More requests, yes, but the results are usually worth the extra inference on your bill.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| topopt | BOOLEAN | false | Enable to set top. Off uses the model's default. |
| top_valueopt | INT | 0 | Number of pixels to extend to the top. |
| bottomopt | BOOLEAN | false | Enable to set bottom. Off uses the model's default. |
| bottom_valueopt | INT | 0 | Number of pixels to extend to the bottom. |
| leftopt | BOOLEAN | false | Enable to set left. Off uses the model's default. |
| left_valueopt | INT | 0 | Number of pixels to extend to the left. |
| rightopt | BOOLEAN | false | Enable to set right. Off uses the model's default. |
| right_valueopt | INT | 0 | Number of pixels to extend to the right. |
| bluropt | BOOLEAN | false | Enable to set blur. Off uses the model's default. |
| blur_valueopt | INT | 00–32 | Amount of blur to apply to the mask edge. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| outpaint | RUNWARE_OUTPAINT | — |