PVL Flux.2 Dev (fal.ai)
Flux 2 Dev in ComfyUI without the 24 GB of VRAM
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- IMAGE
Flux 2 is the open-weights capability ceiling right now - the 32B rectified flow transformer with a Mistral-3 vision encoder that does generation and editing in one checkpoint. It's also the model most people can't run locally: even quantized it wants 18–24 GB of VRAM, and the community's reaction at launch was less "wow" and more "how do I fit this thing." This node answers that with a shrug: it just runs Flux 2 Dev on fal.ai's cloud and hands the image back to your graph. No giant download, no VRAM juggling, no GGUF quantization roulette.
It's part of the ComfyUI Assistant Node pack from pvlprk, which wraps a whole shelf of fal.ai endpoints. You pay per generation, but you pay zero setup cost, and your local machine stays free for other things.
How it works
The node is one of the more complete wrappers in the pack. It base64-encodes any images you connect, picks an endpoint automatically, submits to fal's queue API, polls, and downloads the result as a normal IMAGE tensor. It can even run multiple generations in parallel threads, split your prompt into several on a delimiter, and retry failed calls.
The clever part is endpoint auto-selection - one node covers four jobs:
- No image, no LoRA →
fal-ai/flux-2(text to image) - Image connected →
fal-ai/flux-2/edit(image editing, up to the first 3 of your 8 image inputs as references) - LoRA set →
fal-ai/flux-2/lora - Both →
fal-ai/flux-2/lora/edit
So you can treat this as your do-everything Flux 2 node: write a prompt, and depending on what you wire in, it generates, edits, or edits-with-a-LoRA.
The inputs that matter
prompt- the main event. Withenable_prompt_expansionon, fal's rewriter beefs up short prompts before generation, which is often worth it.image_size- preset ratios (1:1, 3:4, 9:16, 4:3, 16:9) orcustom, which activateswidth/height(512–2048).steps/CFG- defaults 28 and 2.5. Flux 2 is not that sensitive here; leave them alone unless you're hunting for a specific look.num_images- 1–8. Combined with thedelimiterprompt-splitting, you can fan one node out into several parallel generations.acceleration-regularis the default and usually the right call;hightrades quality for speed,nonefor max quality.- Optional
lora1_name…lora3_name- fal-hosted LoRA identifiers with their own scales.
Output is a single IMAGE, ready to feed straight into a VAE-free chain of local nodes - save, upscale, composite.
Installing it
Install the pack via ComfyUI Manager (search "ComfyUI Assistant Node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Then set your fal.ai key as FAL_KEY (the code also reads FAL_API_KEY / FAL_CLIENT_KEY) and restart ComfyUI. Prepaid fal credits required.
Where people get burned
The two classic fal-node traps apply: a missing FAL_KEY kills every call, and errors sometimes surface as a blank placeholder image rather than a loud failure - always glance at the console. Content-policy violations are detected and not retried, so if you get one, fix the prompt, don't just bump retries. And remember Flux 2's safety filtering is aggressive by design; if you're hitting the filter a lot, that's the model card, not your settings.
Inputs (31)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image_size | COMBO | custom | 6 options: 1:1, 3:4, 9:16, 4:3, 16:9, custom |
| width | INT | 1024512–2048 | — |
| height | INT | 1024512–2048 | — |
| steps | INT | 281–100 | — |
| CFG | FLOAT | 2.51–20 | — |
| seed | INT | -1-1–4294967295 | — |
| num_images | INT | 11–8 | — |
| acceleration | COMBO | regular | 3 options: none, regular, high |
| enable_prompt_expansion | BOOLEAN | false | — |
| enable_safety_checker | BOOLEAN | false | — |
| output_format | COMBO | png | 3 options: jpg, png, webp |
| sync_mode | BOOLEAN | false | — |
| retries | INT | 20–10 | — |
| timeout_sec | INT | 305–600 | — |
| debug_log | BOOLEAN | false | — |
| delimiteropt | STRING | [++] | — |
| lora1_nameopt | STRING | — | |
| lora1_scaleopt | FLOAT | 1.0-2–2 | — |
| lora2_nameopt | STRING | — | |
| lora2_scaleopt | FLOAT | 1.0-2–2 | — |
| lora3_nameopt | STRING | — | |
| lora3_scaleopt | FLOAT | 1.0-2–2 | — |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| image_7opt | IMAGE | — | |
| image_8opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |