TwinFlow Z-Image-Turbo
The local-realism favorite, hosted and fast
- lora
- acceleratorOptions
- advancedFeatures.watermark.image
- image
Here's the thing most people miss about this node: Z-Image is the model the local realism community migrated to in late 2025. When everyone got tired of SDXL's limits and FLUX's VRAM appetite, Z-Image Turbo became the default for photorealistic work - it's the base under a huge chunk of the newest realism fine-tunes. This node is Z-Image Turbo running on Runware's servers, so you get that modern look without owning the GPU that usually demands.
The "Turbo" part is a distillation story, and it changes how you set it up. The Turbo weights collapse the diffusion trajectory into a handful of steps - that's why the node's steps defaults to 4 and CFGScale to 0. This is not a bug or a stripped-down preset; it's the whole point. The distilled model doesn't want 30 steps and guidance of 7. Feed it the modern recipe and it's fast, and quality-wise it punches far above what "4 steps" sounded like in the SDXL era.
Inputs that matter
positivePrompt, width, height are required (1024×1024 default, 16px step - Z-Image likes multiples of 16). Then:
steps- default 4, range 1–50. The distilled default is right; only climb if you're chasing fine detail and willing to pay for it.CFGScale- default 0. On a guidance-distilled model, raising CFG mostly buys prompt adherence at the cost of quality. If you must nudge it, stay under ~2. This is the knob people instinctively crank and then complain the output is "burnt."scheduler- 76 options, leave on(default).lora- aRUNWARE_LORAsocket, which is the killer feature here. Z-Image's whole local ecosystem is its LoRA library; on the hosted side you stack LoRAs via the pack's Runware LoRA builder the same way you would locally.negativePrompt- remember the caveat: ignored when guidance is off (CFG ≤ 1). Since this node defaults to CFG 0, your negative prompt is doing nothing unless you raise guidance.acceleration/acceleratorOptions- hosted-side optimization levels (none/low/medium/high) and the accelerator builder. "High" shaves latency; the trade is usually quality or consistency.numberResults- up to 20 variants per run.
seed, outputFormat, outputQuality, and the safety/ttl cluster are standard pack furniture.
How it works
The node sends runware:twinflow-z-image-turbo@0 as an imageInference task through the Runware SDK. The image output comes back as a native IMAGE tensor - wire it to Preview Image or Save Image, or feed it into other Runware nodes as a seedImage. The title bar shows the per-run cost, which is useful because this model is fast enough that you'll stop noticing you're spending money.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, paste your Runware API key into Settings (or RUNWARE_API_KEY), and you're live. Paid, per image, minimum top-up.
Where people trip: they import SDXL habits - 30 steps, CFG 7, negative prompt as a crutch - and get results that look worse than the defaults. Trust the Turbo defaults, keep CFG near zero, and if a generation looks flat, adjust the prompt before you adjust the sliders. And don't expect offline use: this is a hosted model. If you want Z-Image locally, you're looking at a different, much heavier install - this node is the "no-GPU edition."
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024 | Width of the generated media in pixels. |
| height | INT | 1024 | Height of the generated media in pixels. |
| loraopt | RUNWARE_LORA | — | |
| 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 | INT | 41–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 | FLOAT | 0.000–50 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| accelerationopt | COMBO | (default) | Optimization level. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |