SF WaveSpeed Flux Kontext Dev
The open-weight Kontext tier, without the 24GB of VRAM
- client
- output_image
Flux Kontext started the "describe the edit, keep the subject" revolution in mid-2025 - change the clothing, swap the background, drop the watermark, all from a sentence. Kontext Dev is the open-weights tier of that model, the one you could run locally if you had a 24GB card to spare. SF WaveSpeed Flux Kontext Dev gives you the same model over the WaveSpeed API, which means you get the quality without the VRAM and without babysitting a 12B checkpoint. The default prompt even shows you what it's for: "Turn pictures into anime style."
How it works
Kontext is architecturally different from adapter-based editing. Instead of injecting a reference image as an embedding (the IP-Adapter/PuLID approach), it concatenates your input image directly into the model's context alongside the prompt - the model sees the reference and the target at the same time. That's why it holds identity so well across successive edits. Here, the flow is: you give it a public URL for your input image (image_url), the node posts it with your prompt to WaveSpeed's flux-kontext-dev endpoint, and it returns a transformed IMAGE. The open-weights Dev tier is guidance-distilled from Pro, so it's a step behind the API tiers on consistency - but it's the cheapest rung of the Kontext ladder and perfectly good for style swaps.
The inputs that matter
- client - wire the output of SF WaveSpeed Client here first, or nothing runs.
- prompt - the transformation instruction. Be explicit: "Turn this photo into a watercolor painting" beats "make it anime."
- image_url - the input image. This is a URL string, so you need your image reachable on the internet - connect a URL-producing upload node, or host it. Your local ComfyUI image isn't on the web by itself.
- guidance_scale - default 2.5, range 1.0–20.0. Lower is looser; crank it up when the model ignores you.
- num_inference_steps - default 28; more steps, better quality, slower (and, on a paid API, costlier).
- seed - -1 for random; set it for reproducible edits.
- output_format, enable_sync_mode (default true - wait for the result), and optional num_images (1–4).
Output: output_image (IMAGE), ready for preview or further processing.
Installing it
In the SF ComfyUI Nodes pack from Stillfront. ComfyUI Manager → "SF ComfyUI Nodes" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
You'll also need a WaveSpeed API key, set in the SF WaveSpeed Client node, config.ini, or the WAVESPEED_API_KEY env var.
Common issues
The image never arrives: you'll get an error the moment WaveSpeed can't fetch your image_url - this is the single most common failure with this node. Make sure the URL is public and directly linkable (no login walls). Beyond that, set expectations: Kontext's known weakness is anatomy at full-body scale - heads and hands get mushy when a whole body fits the frame - and the model is censored at the weights level, so don't fight it for content Google or BFL decided is off-limits. And remember this is paid per call; iterate on num_inference_steps at 28, don't max it out for every test render.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Turn pictures into anime style | Text prompt describing the desired transformation (e.g., 'Turn pictures into anime style') |
| image_url | STRING | The image URL to transform (connect from Upload Image node) | |
| guidance_scale | FLOAT | 2.51–20 | How closely to follow the prompt (1.0 = loose, 20.0 = strict) |
| num_inference_steps | INT | 2810–100 | Number of denoising steps (more steps = higher quality, slower) |
| seed | INT | -1-1–18446744073709550000 | Random seed for reproducible results. -1 for random seed |
| output_format | COMBO | jpeg | The format of the output image |
| enable_sync_mode | BOOLEAN | true | Wait for image generation to complete before returning |
| num_imagesopt | INT | 11–4 | Number of images to generate (1-4) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |