NS WaveSpeed Flux Kontext Pro
Flux Kontext Pro in ComfyUI, without the 24GB VRAM bill
- client
- output_image
Flux Kontext is the model that taught image editing to do what you ask instead of what it guesses. This node is that model, hosted on WaveSpeed's API, wrapped so it drops a plain IMAGE back into your graph. No weights to download, no VRAM to clear, no key baked into a workflow - you just pay per call.
It belongs to the Symbiotica pack's neuralsins/WaveSpeed family, which is one honest way to get closed models (Kontext included) inside ComfyUI without the official Partner-Node credit storefront. The catch, and it's the same catch for every node in this family: your prompt and reference image leave the machine and the meter runs. Fine for a one-off product shot or a character-consistency edit; wasteful as a default for everything.
How it works
Under the hood it's a thin HTTP client. You feed it a prompt and an image_url, it POSTs to WaveSpeed's /api/v3/wavespeed-ai/flux-kontext-pro, then downloads whatever came back and converts it to a tensor via imageurl2tensor. Kontext works by instruction-following over image concatenation - you describe a transformation in plain language and the model changes the pixels to match, which is why it's become a go-to for character consistency and selective edits where a mask-based inpaint would be the fiddly alternative.
The inputs you actually set:
prompt- the transformation, in words. "Make it golden hour", "replace the background with a studio", that kind of thing. Defaults to a tea-brewing example so you can see it work instantly.image_url- the image to transform. This is a URL string, not a tensor, so you can't wire your local render straight in. You need a hosted, publicly reachable image.guidance_scale- 1.0 to 20.0, default 3.5. Low means "loose, take liberties", high means "strictly follow the prompt". This is the one dial you'll actually touch.enable_sync_mode- on by default, meaning the node waits for the generation and returns the finished image. Flip it off and it submits the job and polls instead.
Output is output_image (IMAGE), ready to wire into a Save Image, a VAE-free composite, or your next edit pass.
Installing
Install the whole pack once - every WaveSpeed node ships in it.
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Then restart ComfyUI. Or search Symbiotica in ComfyUI Manager and click install. Dependencies are light - requests, pillow, and faster-whisper (that last one is only for the transcription nodes; it's not why you're here).
You also need an API key. Easiest path: ComfyUI Settings → search "Symbiotica" → paste your WAVESPEED_API_KEY. Or set the WAVESPEED_API_KEY environment variable. The pack never requires a key just to load - only at the moment a node actually calls out.
Common issues
- "Connect from Upload Image node" - the tooltip means the input wants a URL. There's no upload node in this pack, so you'll point it at something already hosted or use another pack's URL-emitting loader. This trips up more people than anything else in the family.
- Node times out on a busy queue. WaveSpeed's poll has a 300-second cap. If the queue is long, bump to async or just re-queue.
- The result looks nothing like your reference. That's guidance_scale doing its job too loosely - raise it toward 6-8 before you blame the model.
Where people get burned is the cost, not the mechanism. Every queue run is a paid render, so mute the branch when you're done, not when it's convenient.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | A woman is brewing tea | Text prompt describing the desired transformation or scene |
| image_url | STRING | The image URL to transform (connect from Upload Image node) | |
| guidance_scale | FLOAT | 3.51–20 | How closely to follow the prompt (1.0 = loose, 20.0 = strict) |
| enable_sync_mode | BOOLEAN | true | Wait for image generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |