flux2Dev / sdcpp / editImage
Instruction-edit a photo with Flux 2 Dev, on Civitai's fleet
- loras
- images
- api_config
- images
- errors
- workflow_id
- raw_json
This is the "just tell it what to change" node, powered by the strongest open-weights editor in existence. Flux 2 Dev's edit mode takes your image and a plain-language instruction - "remove the people from the background", "change the shirt to a leather jacket" - and rewrites the frame to match. Locally that requires a 48GB+ card and a long queue; through this node it runs on Civitai's sdcpp fleet and comes back as a ComfyUI IMAGE.
It sits between the two other Flux 2 nodes: createImage dreams from scratch, createVariant re-renders by strength, and this one edits by instruction. That's the better tool for targeted changes, because you're not guessing a strength value - you're saying what should happen. The catch is the same as every cloud node here: it costs Buzz, and edits are a heavy job.
How it works
Same Orchestration client, engine: sdcpp, ecosystem: flux2Dev, operation: editImage. Your images are sent up as data URLs with the prompt; the fleet runs the edit; the result is converted back into an IMAGE tensor. Model is fixed server-side - no selector wiring required.
The inputs that matter
- prompt (required) - the instruction. Be explicit and specific; Flux 2 Dev rewards "change the red car in the background to a blue van" far more than "make it different."
- images (optional,
IMAGE) - the source(s) to edit. Optional in the schema, but essential in practice: no image, no edit. Wire aLoadImage(or several, for multi-reference edits - one of Flux 2's strengths). - steps / cfg_scale - 20 / 1 defaults.
- width / height - 512–2048, letting you edit up to larger output than the input.
Install
Pack install: ComfyUI Manager → "Civitai Comfy Nodes" → Install → restart. Or clone https://github.com/civitai/civitai-comfy-nodes.git into custom_nodes, pip install -r civitai-comfy-nodes/requirements.txt (just requests), restart.
Common issues
Credentials: Civitai Auth node into api_config, or CIVITAI_API_TOKEN env var (from civitai.com/user/account).
The practical trap is forgetting to wire images - an "edit" with no input becomes a fresh generation, and you'll pay Buzz for it. The other one is instruction scale: huge wholesale changes ("turn this photo of a house into a spaceship") behave more like a variant than an edit - the model can do it, but the more of the frame you're moving, the less of your source survives. For surgical edits, keep the instruction about what you're changing, not the whole scene.
Budget honestly: this is one of the expensive nodes in the pack, and each failed or half-right attempt is a separate charge. One image, prompt polished, then iterate.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| widthopt | INT | 1024512–2048 | — |
| heightopt | INT | 1024512–2048 | — |
| seedopt | INT | 00–4294967295 | — |
| quantityopt | INT | 11–4 | — |
| cfg_scaleopt | FLOAT | 1.001–20 | — |
| stepsopt | INT | 204–50 | — |
| sample_methodopt | COMBO | 16 options: , euler, heun, dpm2, dpm++2s_a, dpm++2m, +10 | |
| scheduleopt | COMBO | 12 options: , simple, discrete, karras, exponential, ays, +6 | |
| negative_promptopt | STRING | — | |
| lorasopt | CIVITAI_LORAS | — | |
| imagesopt | IMAGE | — | |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |