Protoface FLUX.2 Pro · Edit Image
The Editing Model You Can't Run, Wired Into Your Graph
- image
- mask
- files
- run id
FLUX.2 Pro is the hosted tier of Black Forest Labs' image model. There's no file to download - Flux 2 Dev, the open one, needs roughly 53GB across the model and its Mistral encoder, which is why the community's local answer was Klein, not this. Pro is the version you rent.
Why people actually pay for it
Because it renders text properly. That's the recurring verdict on the Flux line, and Pro is the tier where it's sharpest: signage, packaging, UI mockups, anything with lettering that has to survive being looked at. The other thing Pro is good at is natural detail - skin, fabric, foliage - without the plastic sheen that every fine-tune in this ecosystem spends its life trying to undo.
For editing specifically, it's a strong instruction-follower with a catch worth knowing up front: BFL's own model line is censored, and the KG panel on the company notes that Kontext and Flux 2 are more heavily filtered than the early Dev-tier releases. If your edit involves nudity or anything a provider filter dislikes, the model refuses at the source and there's nothing a node can do about it - there are no weights to abliterate.
How the node works
Protoface doesn't implement Flux. It ships a bundled catalog of model/task schemas, generates a native ComfyUI V3 node for each pairing at startup (black-forest-labs/flux-2-pro × image.edit here), and routes all of them through one shared adapter. Queue and the sequence is: encode your IMAGE tensor to PNG, upload if that exact content isn't already cached, validate the payload against the schema before spending anything, submit, poll with a progress bar, download to the pack's state directory, decode into ComfyUI types.
The journal matters more here than anywhere. Before submission the adapter writes a request identity - account, request_scope, node id, generation_id, model id, schema fingerprint, hash of the payload including the exact bytes of your inputs - into a local SQLite file. Requeue identical work after a crash and it resumes; change the prompt and you're buying a new edit, which is correct.
The controls, all six of them
There aren't many. prompt is the edit instruction. images takes your source material - up to three images, slots autogrowing as you connect. Multiple references are how you do compositing-by-description: "put the jacket from image 2 on the person in image 1, keep the lighting of image 1".
size is optional. Leave it on Default and the parameter is omitted from the request; set it to control output dimensions, in the format the tooltip gives: pixels as width*height. Note the asterisk. It's a string field, not two number widgets.
seed is optional (-1 random), and generation_id is the paid-job identity - fixed by default, which is what you want.
What you won't find: steps, CFG, guidance, sampler, denoise, negative prompt. Those are local-model concepts; this model exposes none of them, and any guide telling you to set guidance to 3.5 on a Pro node is written for a different Flux.
Outputs
image is an output list - ComfyUI maps downstream nodes over lists, so an upscaler or Save Image just works. mask comes back with the result, inverted to ComfyUI's convention, so it drops straight into inpaint/composite paths. files gives the original downloaded asset as a PROTOFACE_FILE for Protoface Save File. run id is a string: your handle for Protoface Resume Run.
Install
cd ComfyUI/custom_nodes
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
python -m pip install -r protoface/requirements.txt
Manager route: search Protoface, install protoface-nodes, restart ComfyUI, reload the browser. ComfyUI 0.41.0+ and Python 3.10+; installs httpx, jsonschema, Pillow, av. No weights, no CUDA, no VRAM. Then click Protoface in the lower-right corner and paste your key - held in server memory, gone on restart, unless you set PROTOFACE_API_KEY_FILE. Billing goes to your Protoface account, not to Comfy credits.
Where people get burned
Batch of images into images. A Load Image with batch_size 4 throws "expects one asset; split the image/audio batch first". Three separate refs, three separate connections.
The edit changed everything. Pro is faithful to the instruction, and a vague instruction is permission to redesign. Say what stays: "keep the face, pose and background identical; replace only the jacket."
1024x1024. Asterisk, not an x. Whatever you type goes into a string field.
Treating a re-run as free. Bumping generation_id or editing the prompt is a new paid request. Interrupting mid-job requests cancellation, which is best effort and explicitly not a refund.
Comfy Cloud. Custom nodes aren't installable there, so this pack has no path into it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The positive prompt for the generation. | |
| images | COMBO | Public URLs, data URIs, or asset ids. | |
| seed | COMBO | The random seed to use for the generation. -1 means a random seed will be used. | |
| size | COMBO | The size of the generated media in pixels (width*height). | |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |