Nodes/Runware.ai ComfyUI Inference API Integration/Stable Diffusion XL Turbo (custom model)
ComfyUI Node

Stable Diffusion XL Turbo (custom model)

SDXL Turbo in the cloud, with the whole SDXL ecosystem attached

By Runware·Created 2 years ago·Updated about a month ago· 140
Stable Diffusion XL Turbo (custom model)
  • seedImage
  • maskImage
  • outpaint
  • lora
  • controlNet
  • ipAdapters
  • embeddings
  • refiner
  • ultralytics
  • acceleratorOptions
  • advancedFeatures.watermark.image
  • image
modelcivitai:215478@242846
positivePrompt
width1024
height1024
negativePrompt
seed0
stepsfalse
steps_value1
scheduler(default)
CFGScalefalse
CFGScale_value0.00
strengthfalse
strength_value0.80
maskMarginfalse
maskMargin_value32
clipSkipfalse
clipSkip_value0
vae
promptWeighting(default)
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
safetyfalse
safety.checkContentfalse
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95
advanced_json

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.

CategoryRunware/Custom models

Inputs (45)

NameTypeDefaultDescription
modelSTRINGcivitai:215478@242846AIR of any checkpoint of this architecture. Use the search button to browse the catalog.
positivePromptSTRINGText prompt describing elements to include in the generated output.
widthINT1024128–2048Width of the generated media in pixels.
heightINT1024128–2048Height of the generated media in pixels.
seedImageoptIMAGE
maskImageoptIMAGE
outpaintoptRUNWARE_OUTPAINT
loraoptRUNWARE_LORA
controlNetoptRUNWARE_CONTROLNET
ipAdaptersoptRUNWARE_IPADAPTERS
embeddingsoptRUNWARE_EMBEDDINGS
refineroptRUNWARE_REFINER
ultralyticsoptRUNWARE_ULTRALYTICS
acceleratorOptionsoptRUNWARE_ACCELERATOROPTIONS
advancedFeatures.watermark.imageoptIMAGE
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
stepsoptBOOLEANfalseEnable to set steps. Off uses the model's default.
steps_valueoptINT11–50Total number of denoising steps. Higher values generally produce more detailed results but take longer.
scheduleroptCOMBO(default)Scheduler to use for the diffusion process.
CFGScaleoptBOOLEANfalseEnable to set CFGScale. Off uses the model's default.
CFGScale_valueoptFLOAT0.000–30Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
strengthoptBOOLEANfalseEnable to set strength. This setting has usage rules in this model, so it is off unless you enable it.
strength_valueoptFLOAT0.800–1Strength of the transformation. Lower values result in more influence from the original input.
maskMarginoptBOOLEANfalseEnable to set maskMargin. Off uses the model's default.
maskMargin_valueoptINT3232–128Extra context pixels around the masked region during inpainting. The model zooms into the masked area with these additional pixels for better integration.
clipSkipoptBOOLEANfalseEnable to set clipSkip. Off uses the model's default.
clipSkip_valueoptINT00–4Number of layers to skip in the CLIP model.
vaeoptSTRINGVAE model identifier. Overrides the default VAE included with the base model.
promptWeightingoptCOMBO(default)Syntax used for prompt weighting.
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.
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.
advanced_jsonoptSTRINGOptional JSON merged into the request. For: hiresFix

Outputs (1)

NameTypeDescription
imageIMAGE