SF WaveSpeed Qwen Edit Plus LoRA
Three reference images, three LoRA slots, zero VRAM
- client
- output_image
Qwen-Image-Edit is the open instruction editor the community rebuilt half its character tooling around. The catch: it's a 20B model, and even quantized it wants a serious card. This node is that editor with the VRAM problem deleted - it runs on WaveSpeed's servers and hands you back a decoded IMAGE tensor. You write a sentence in English or Chinese, point at up to three reference images, and the edit comes back like you ran it locally.
It's one of the SF WaveSpeed nodes from Stillfront/comfyui-sf-nodes ("SF ComfyUI Nodes"), the same pack that wraps Veo, Sora 2, Wan and Seedream. Everything here is API-driven: no model files, no GPU, and it needs a WaveSpeed AI API key. If you've been avoiding the 20B download, this is the "try it without committing a terabyte of VRAM" path.
How it works
Under the hood the node POSTs to /api/v3/wavespeed-ai/qwen-image/edit-plus-lora with your prompt, the image URLs, an optional LoRA list, a target size and an output format. WaveSpeed runs the Qwen Edit Plus model server-side and returns a URL, which the node downloads and converts to a standard IMAGE tensor - so it plugs straight into a Preview or Save node.
Two things trip people up because they're used to local LoRA loading. First, lora_1_path, lora_2_path, lora_3_path are server-side model references, not local files. The author's own example is flymy-ai/qwen-image-realism-lora - a HuggingFace-style owner/model id or a full URL. Your .safetensors on disk won't work, and that's by design; WaveSpeed loads the LoRA on their side. Second, each has a matching scale (0.0 to 4.0, default 1.0). Three LoRA slots is the ceiling, and an empty path is just skipped.
The inputs that matter
- client - required. Connect the SF WaveSpeed Client node from the same pack and put your key in it. Every WaveSpeed node needs one.
- prompt - the edit instruction, plain language, bilingual English/Chinese. "Make the dress blue" works; so does the Chinese equivalent.
- image_url_1 / 2 / 3 - reference images as URL strings (the tooltip says connect from ComfyUI's Upload Image node). At least one is required; up to three, which is the multi-image editing that 2509-and-later Qwen Edit is known for.
- size - seven presets, all capped at 1536px per side (1328x1328 square default). Use custom_size as
1920*1080if you want something else; it overrides the dropdown. - seed, output_format (jpeg/png/webp), enable_sync_mode (leave on - it waits for the result before returning).
Output is output_image (IMAGE), ready for Preview Image or a save node.
Install
In ComfyUI Manager search for "SF ComfyUI Nodes" and hit Install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
Restart ComfyUI, then drop in the SF WaveSpeed Client node. You can paste your WaveSpeed key into its widget, or set [API] api_key = ... in config.ini (copy it from config.ini.tmp) or the WAVESPEED_API_KEY env var.
Gotchas
- The image URLs must be reachable by WaveSpeed's servers. A
localhostURL fails; host your source image somewhere public or use the Upload Image node's URL. - The README's config example says
wavespeed_api_key, but the code actually reads a key namedapi_key- copyconfig.ini.tmpand you're fine. custom_sizemust be exactlywidth*height; a bare number raises an error.- If the pack won't load in a minimal environment, its
requirements.txtis deliberately light - the image nodes also import PyAV and torchaudio at load time, sopip install av torchaudiocovers that edge.
This is billed per edit, so it's not the node for a thousand-iteration session. For that you'd run Qwen Edit 2511 locally with GGUFs. But for a one-off professional edit, or a style test you can't fit on your card, it's the fastest route to Qwen-Edit quality you'll find.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| promptopt | STRING | Edit instructions (supports Chinese & English). Describes the changes you want to make to the image. | |
| image_url_1opt | STRING | First reference image URL (connect from Upload Image node) | |
| image_url_2opt | STRING | Second reference image URL (optional, max 3 total) | |
| image_url_3opt | STRING | Third reference image URL (optional, max 3 total) | |
| lora_1_pathopt | STRING | First LoRA model path (e.g., 'flymy-ai/qwen-image-realism-lora') | |
| lora_1_scaleopt | FLOAT | 1.00–4 | First LoRA influence scale (0.0 to 4.0) |
| lora_2_pathopt | STRING | Second LoRA model path (optional) | |
| lora_2_scaleopt | FLOAT | 1.00–4 | Second LoRA influence scale (0.0 to 4.0) |
| lora_3_pathopt | STRING | Third LoRA model path (optional) | |
| lora_3_scaleopt | FLOAT | 1.00–4 | Third LoRA influence scale (0.0 to 4.0) |
| sizeopt | COMBO | 1328x1328 (1:1) | The aspect ratio and resolution of the output image |
| custom_sizeopt | STRING | Custom size as 'width*height' (e.g. '1920*1080'). Overrides size dropdown if provided. | |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducible results. -1 for random seed |
| output_formatopt | COMBO | jpeg | Output image format |
| enable_base64_outputopt | BOOLEAN | false | Return image as BASE64 encoded string instead of URL |
| enable_sync_modeopt | BOOLEAN | true | Wait for generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |