Z-Image Base LoRA · Edit
The non-distilled model, now with your weights in it
- image_url
- loras
- images
- task id
Z-Image Base is the reason a lot of people bought 12GB cards. Six billion parameters, Apache 2.0, non-distilled, and it brought back something Turbo had quietly lost: seed diversity. The catch was always the VRAM conversation and the fiddly stack - checkpoint, text encoder, VAE, adapter, sampler settings, plus your LoRA on top. This node is that stack, in the cloud, with an loras socket and no sampler settings at all.
What "Base" buys you here
The community split on Z-Image pretty cleanly. Turbo is the daily driver: 8 steps, sub-second on good hardware, gorgeous and slightly samey. Base is the one you train on and the one that varies - the release thread's top comment called it "the SDXL 2.0 model we've been waiting for", largely for seed variance and prompt adherence on odd concepts.
Base is also the version whose LoRAs are worth having. Z-Image trained on Base transfers across models; Turbo-trained ones stay on Turbo. Which makes this node - Base, plus up to three of your own LoRA files - the useful half of the pair.
One oddity worth knowing: Z-Image-Edit was announced with Base and never shipped. So "Z-Image does editing" in a hosted API is Alibaba's own packaging of an edit task on Base, not a released Edit checkpoint you could run locally. Treat it as a capability the API provides rather than a model you own.
The fields
image_url is the source image, connected as an IMAGE socket. The result keeps its aspect ratio - you're not choosing a shape, you're choosing how big the long side gets.
prompt wants the whole image you want back, not just the change. That's the tooltip, and it's the single biggest adjustment coming from a mask-based inpaint node: this is instruct-style editing, so describe the final photograph, including everything you want preserved.
strength is the dial that matters. Default 0.7, range 0 to 1, "how far to move away from the source". Low values keep the photo and nudge it; 0.9 and up redraws freely and drifts from your subject. Start at the default, move in 0.1 steps, and stop changing it the moment you get something good.
resolution is 1k or 1.5k, meaning the long side in pixels. output_format is jpeg, png or webp - png if you're going to composite afterwards. seed starts fixed, so the same graph run twice doesn't quietly bill you twice.
loras is the socket that justifies the node's existence: up to three LoRA weight files trained for Z-Image Base, each with its own strength. You feed it from a PopNow LoRA node, whose source takes a .safetensors in ComfyUI/models/loras (uploaded once, reused for 12 hours), a Hugging Face repo id or page, a Civitai page, or any direct https:// link. Gated files read HF_TOKEN or CIVITAI_API_KEY from your environment - never from a widget, because widgets end up in shared workflow files.
If a LoRA has a trigger word, put it first in the prompt. This is true locally and true here; the node can't know your trigger.
How it runs, and what it costs
The node is generated from alibaba/z-image-base-lora/edit's published schema, so its fields are the model's fields. Your image is uploaded to a popnow:// file URI, the run is quoted before any credits are held, submitted with an idempotency key, polled, then downloaded and decoded into an IMAGE batch plus the task id. Flat 2.16 credits per image (1 credit = $0.001) - about two cents, with the LoRAs included.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Manager, search PopNow, works too. Restart, add your key at popnow.ai/api/console/keys via Settings > PopNow or POPNOW_API_KEY, restart again. No GPU, no model downloads - including no need to hold the 6B Base checkpoint anywhere.
Where people get burned
Strength is the trap. People coming from masked inpainting set strength low expecting "only change the shirt" and get "slightly different shirt, and also the face moved a little". Instruct editing needs enough strength to actually edit; describe the whole output and let 0.7 do its job.
Second trap: stacking. Three LoRAs is the ceiling, and on Z-Image more than one has historically caused quality collapse - the KB's notes on multi-LoRA stacking on this family are worth heeding. Test one at a time; the second one should earn its place.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the whole image you want back, not just the change. | |
| image_url | IMAGE | Source image. The result keeps its aspect ratio. | |
| resolution | COMBO | 1k | Length of the output's long side: 1k is 1024 pixels, 1.5k is 1536. The source's aspect ratio is kept. |
| strength | FLOAT | 0.700–1 | How far to move away from the source, from 0 to 1. |
| output_format | COMBO | jpeg | Container of the returned image. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| lorasopt | POPNOW_LORAS | Up to three LoRA weight files trained for Z-Image Base, each with its own strength. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |