Z Image (custom model)
Z-Image — but any fine-tune you want, by AIR
- seedImage
- maskImage
- outpaint
- lora
- ultralytics
- acceleratorOptions
- advancedFeatures.watermark.image
- image
If you've been in the ComfyUI ecosystem for more than a few months, you know Z-Image: Alibaba's open-weights model that quietly took the photorealism default away from Flux. This node is that model plus one very good twist - it's an architecture node. Instead of being locked to the base Z-Image, it runs any checkpoint of Z-Image architecture from the Runware catalog. The model field takes an AIR string (the default is runware:z-image@0) and there's a search button right on the node to browse community fine-tunes. Same node, different model, no re-installing anything.
This is the payoff of how the Runware pack is built: one node per model, generated from a schema, all running on Runware's cloud. You install the pack once (ComfyUI Manager → search Runware, or clone https://github.com/Runware/ComfyUI-Runware into custom_nodes/), add an API key in ComfyUI Settings, and every model - including every Z-Image fine-tune they host - shows up as a node. No checkpoints, no VRAM math, no models/unet folder to babysit.
How it works
Mechanically it's the same as every image node in the pack: your widgets and any wired builder sockets get folded into a request, sent to Runware as a taskType of image inference, and the result comes back as a native IMAGE tensor. The difference is the model input, which the node reads per-run. Swap runware:z-image@0 for a fine-tune's AIR and the same graph renders through that checkpoint. That's the whole value proposition: a workflow that uses this node becomes a testbed for every Z-Image-architecture model in the catalog.
Inputs that matter
- model (required) - the AIR, with a search button. This is the field you'll actually change.
- positivePrompt - Z-Image is a T5/LLM-encoded architecture; write descriptive natural language, not SD1.5 tag soup.
- width / height - 128–2048, stepped by 16.
- seedImage / maskImage - IMAGE sockets for img2img and inpainting; pair with
strengthandmaskMargin(the inpainting context-padding control). - CFGScale - here's the subtle one. Z-Image is guidance-distilled, and the tooltip is blunt: the negative prompt is ignored when guidance is disabled (CFGScale ≤ 1). The base model wants CFG 1 - that's the default state of the art for 2026 models, guidance baked into the weights. Cranking CFG on Z-Image doesn't buy prompt adherence; it overcooks the image.
- steps - toggle-gated; off uses the model's default, which is usually the right call on a distilled architecture.
- lora / outpaint / acceleratorOptions / watermark / ultralytics - typed sockets from the Runware/Params builders.
The image output is a plain IMAGE, so it drops into Preview Image or Save Image exactly like a local generation. The title bar shows your per-run cost and the NSFW flag when a content check ran - useful, since a custom fine-tune may behave differently from the base.
Where people get burned
- CFG ≠ more adherence here. The "CFG 7 fixes everything" muscle memory from the SDXL era actively hurts on Z-Image. Leave the gate off, or stay in the 1–3 range.
- Fine-tune AIRs - the search button is your friend; typing a random AIR gets you an error with a
parameter/codetag that tells you what to fix, but it's still a wasted run. - The toggle pattern - steps/CFGScale/strength are "enable to set X" booleans with paired
_valuefields. Flip the toggle, set the value; off means model default.
The name is a little dry for what it is. This is the node that turns "try the new Z-Image fine-tune" from a half-hour of downloading into a dropdown change.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | runware:z-image@0 | 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 | — | |
| 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–20 | 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. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |