Protoface FLUX.2 Turbo · Text to Image
Iterate Until It's Right, Then Switch Models
- image
- mask
- files
- run id
FLUX.2 Turbo is the speed tier of Black Forest Labs' stills model - same operations as Pro, faster, cheaper in the way speed tiers usually are. It's the node I'd put in front of a client during a call, and the one I'd swap out before anything got exported.
The case for drafting on an API model
Local Flux 2 Dev is a 32B model plus a Mistral encoder, around 53GB before you think about quantisation; the KB's account of the launch is that the community looked at the weight, looked at Z-Image Turbo landing the same week at 6B and Apache 2.0, and moved on. Klein became the local editor. Which means if you want the Flux 2 look - the specific rendering of type, the natural detail - and you don't want a 48GB card, the API is the honest route.
Turbo then handles the part where a shared API bill becomes a design constraint. Twelve alternatives in twenty minutes is normal for a creative session, and that's not twelve Pro generations' worth of value. Get the composition right here, then re-run the keeper on Pro with the same prompt.
Mechanism, in plain terms
The pack has no Flux code. It bundles a catalog of model/task schemas and generates native ComfyUI nodes from each pairing at startup; this is black-forest-labs/flux-2-turbo × image.generate. All of them go through one shared adapter: validate against schema, submit, poll with a progress bar, download, decode. On a text-only job there's no media to upload, so the interesting machinery is the local journal - the request identity (account, scope, node id, generation_id, model, schema version, payload hash) is written before submission, so requeueing an unchanged graph resumes the recorded run instead of paying twice.
Controls
prompt - plain description works. Flux 2 doesn't reward the old comma-soup; name the subject, the medium, the lighting, and put any literal text in quotes.
size - a string field, default 1024*1024, format width*height with an asterisk. One field, not two. 1344*768 is a valid wide frame; 1344x768 is a typo the schema will happily store and the API will not interpret.
seed - optional integer, -1 for random. Hold the seed when you're iterating on a prompt so you're comparing prompts and not random noise.
generation_id - separate from seed, and the one that costs money. Fixed to reuse or resume the same job; increment for a fresh paid generation.
No steps, no CFG, no sampler, no negative prompt. Those knobs belong to local checkpoints.
Outputs
image is an output list, which means ComfyUI maps any connected node over the results - no special list handling. mask comes with it, derived from alpha and inverted the ComfyUI way, so it slots into inpaint graphs. files is the original asset as a PROTOFACE_FILE for Protoface Save File. run id is a string; feed it to Protoface Resume Run if a job outlives the browser.
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 users: search Protoface, install protoface-nodes, restart, reload the browser. ComfyUI 0.41.0+ and Python 3.10+ are required; the pip line installs httpx, jsonschema, Pillow and av. Nothing downloads weights, so install takes seconds and needs no GPU. Then click Protoface in the lower-right corner and paste your account key - it stays in server memory, so re-enter it after a restart or use PROTOFACE_API_KEY_FILE on a headless box.
Practical notes
Draft in a batch, not in a loop. Several Turbo nodes with different prompts in one graph is one queued run and one wait, which beats queueing eleven times.
Keep a prompt file. Since there's no local checkpoint to anchor to, your prompt is the workflow. Notes in a text file save you re-deriving a good description from a screenshot.
Watch the concurrency default. The pack runs two requests at a time (PROTOFACE_CONCURRENCY). Batch more than that and the extras queue behind the semaphore rather than failing.
Filtering applies. BFL's hosted models are moderated; a refused prompt is a refusal from the provider, not a node bug, and there's no local knob to work around it.
Credits aren't Comfy credits. Protoface bills your Protoface account directly. Comfy Cloud won't install the pack at all, and an auth problem shows up as a job that quietly doesn't produce - check the settings dialog shows https://api.protoface.com before you debug anything else.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The positive prompt for the generation. | |
| seed | COMBO | The random seed to use for the generation. -1 means a random seed will be used. | |
| size | STRING | 1024*1024 | 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 | — |