Stable Diffusion XL (custom model)
Run any SDXL checkpoint without downloading a byte
- seedImage
- maskImage
- outpaint
- lora
- controlNet
- ipAdapters
- embeddings
- refiner
- photoMaker
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
This is the node that turns "which checkpoint should I use?" from a download decision into a search box. RunwareArch_sdxl is a custom-model node: it hosts the whole SDXL architecture, and the model field takes any SDXL checkpoint's AIR - civitai:101055@128078 by default - so you can swap community fine-tunes without downloading a single weight file. It's Runware's answer to the fact that the SDXL ecosystem is thousands of checkpoints and your hard drive is not.
If that sounds niche, think about who this is for. You don't have a GPU, or you're on a laptop, or you just don't want to manage 40GB of SDXL variants. You browse the model catalog (the node has a search button), pick a checkpoint, and it runs in the cloud like it was local. The SDXL fine-tune ecosystem - anime, realism, illustration - is all reachable through one node, and the sockets for LoRA, ControlNet, IP-Adapter, embeddings, refiner, and PhotoMaker are right there to stack on top.
How it works
The node sends an imageInference request with whatever AIR is in the model field. Your IMAGE inputs (seed image, mask) go up as base64, the sampling parameters you set are passed through, and the finished image returns as a native IMAGE tensor. Every feature socket - lora, controlNet, ipAdapters, embeddings, refiner, photoMaker - is a typed input that wires to the pack's builder nodes, which is how you chain, say, a ControlNet edge map plus a LoRA in one request.
The inputs that matter
model(required) - the AIR string, defaultcivitai:101055@128078. Use the search button to browse the catalog instead of typing from memory.positivePrompt(required) - plusnegativePrompt, which SDXL still rewards.width/height- 1024×1024 defaults, 128–2048, step 8. SDXL likes 1024-era resolutions; straying far degrades anatomy.steps/CFGScale- interesting twist: both are off by default, gated behind a checkbox each. The node deliberately lets the model decide unless you intervene. Enable and setsteps_value/CFGScale_valuewhen you want control.seedImage/maskImage- img2img and inpainting, withmaskMarginfor context pixels.clipSkipandvae- the classic SDXL tinkering pair;vaeoverrides the checkpoint's bundled VAE with an AIR.advanced_json- documented escape hatch forhiresFix.
Installing it
Install the pack, not the checkpoint. 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
Key from runware.ai/api-keys → ComfyUI Settings → Runware API key (or RUNWARE_API_KEY).
Where people get burned
- Every checkpoint is a different bill. Cloud inference prices by compute; a heavy 50-step run on a big SDXL merge costs more than a quick one. The title bar shows each run's price - that's your feedback loop.
- Not every checkpoint is on Runware. The search button shows the catalog; an AIR that 404s means that specific CivitAI file isn't hosted. Pick from what's there.
- The gated defaults are a feature.
stepsandCFGScalebeing off by default means the request goes out without them and the model fills in sensible values. If you set them, set them on purpose - a 0CFGScale_valuewith the gate on sends guidance that may surprise you. - Feature sockets need builders.
controlNetdoesn't accept a raw image; it takes the pack's ControlNet builder output (like the Canny preprocess node's edge map).
RunwareArch_sdxl is the node that finally makes "try twenty SDXL checkpoints" a twenty-minute experiment instead of a twenty-gigabyte download spree. It's the most flexible image node in the pack.
Inputs (46)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | civitai:101055@128078 | AIR of any checkpoint of this architecture. Use the search button to browse the catalog. |
| 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 | — | |
| embeddingsopt | RUNWARE_EMBEDDINGS | — | |
| refineropt | RUNWARE_REFINER | — | |
| photoMakeropt | RUNWARE_PHOTOMAKER | — | |
| 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–30 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| 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. |
| clipSkipopt | BOOLEAN | false | Enable to set clipSkip. Off uses the model's default. |
| clipSkip_valueopt | INT | 00–4 | Number of layers to skip in the CLIP model. |
| vaeopt | STRING | VAE model identifier. Overrides the default VAE included with the base model. | |
| 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 | — |