Stable Diffusion XL Turbo (custom model)
SDXL Turbo in the cloud, with the whole SDXL ecosystem attached
- seedImage
- maskImage
- outpaint
- lora
- controlNet
- ipAdapters
- embeddings
- refiner
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
SDXL Turbo was the model that made "how fast can you go?" a real question. It's the Adversarial Diffusion Distillation take on SDXL - a student model trained to jump straight to the answer in a handful of steps instead of 20–50. The tradeoff is baked in: fewer steps means less refinement, and distilled models are picky about settings (low CFG, the right scheduler, don't push it to high resolution). But for iteration speed, it's still hard to beat.
This node is the Runware pack's architecture wrapper for it. The model field defaults to the actual SDXL Turbo checkpoint (civitai:215478@242846) but it's a "custom model" node, so you can swap in any SDXL-architecture checkpoint from Runware's catalog and run it without downloading anything. The magic of this particular arch node is how much of the SDXL toolchain it exposes.
How it works
Standard pack mechanics: the node assembles a taskType: imageInference request with your model AIR and widget values, ships it over the Runware REST API, and converts the returned image URL into an IMAGE tensor. Nothing runs on your machine except the request.
Inputs that matter
- model - the AIR. Leave the default unless you want a different SDXL checkpoint.
- positivePrompt - plus negativePrompt, which only applies when CFG is above 1.
- seedImage / maskImage - wire an image in and you've got img2img / inpainting. maskMargin adds context pixels around the mask (32–128) so the inpainted area blends instead of looking pasted.
- lora / controlNet / ipAdapters / embeddings / refiner - typed sockets for the pack's builder nodes. This is where the node shines: ControlNet for pose/structure, IP-Adapter for style/character, LoRA for whatever the checkpoint is known for. Stack them.
- strength - img2img strength, off by default (this model has usage rules, so it's gated behind an enable toggle).
- steps / scheduler / CFGScale - with a distilled model, less is more. A handful of steps, CFG near 1, and the model's preferred scheduler beat brute-forcing 30 steps at CFG 7.
- advanced_json - the escape hatch; for this node it's documented for
hiresFix. Paste a JSON object and it merges into the request.
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 the RUNWARE_API_KEY env var. The pack is prepaid top-up; the node title bar shows cost per run.
Gotchas
- Distilled models punish you for treating them like normal ones. If your Turbo output looks flat, lower CFG, cut steps, and check the scheduler - don't just add steps.
- JPG output flattens alpha, which matters if your inpaint workflow wants masks later.
- If a run errors, the console message includes the offending parameter - the pack deliberately surfaces
parameter 'x'so you know which widget broke the request.
The reason to pick this over a generic SDXL node: it bundles the whole SDXL accessory kit - ControlNet, IP-Adapter, refiner, inpaint - behind one remote call. Fast, cheap, and surprisingly full-featured for something that never touches your GPU.
Inputs (45)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | civitai:215478@242846 | 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 | — | |
| 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 | — |