NanoSeed
NanoSeed turns your ComfyUI graph into a fal.ai editing terminal — no GPU, no model downloads
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- mask
- edited_image
This node is a phone call, not a model
NanoSeed doesn't load weights. It doesn't touch your VRAM. Wire an image in, type what you want done to it, and it packs the pixels up and emails them to fal.ai's cloud, where one of a dozen hosted editing models works on them, and hands the result back. The whole point is that you get Nano Banana 2, Seedream 5, Grok Imagine, Flux 2 Edit - models that are either API-only by design or too heavy to be worth self-hosting - without leaving your ComfyUI graph.
The name is a lie in a good way. There's no "seed" running anywhere locally; there's a requests call. The only hard dependency in requirements.txt is requests, and the whole thing is one ~450-line Python file. If you've got a modest card and keep bouncing off Flux 2's 50+ GB of weights, this is the workaround: rent the inference per image instead of buying the hardware.
How it works
The mechanism is dead simple, which is why it's reliable. The node takes up to ten IMAGE tensors, converts them to base64 PNG data URIs, picks the right fal endpoint for your model, POSTs your prompt and settings, then decodes the returned PNG(s) back into an IMAGE tensor. There are model-specific shims bolted on top - Seedream 5 gets its aspect_ratio/resolution translated into a pixel size, Qwen gets a guidance_scale of 4.0, Nano Banana gets its own payload shape - but under it all it's a thin HTTP client with an API key.
That means two things you should internalize. First, every generation costs real money, billed by fal per image, and a num_images of 6 with a batch of inputs adds up fast. Second, you're at the mercy of fal's servers and their safety pipeline; the node disables some checkers it can (Seedream and Flux payloads ship enable_safety_checker: False), but provider-side filtering is still a thing, and reddit's verdict is that fal runs one of the stricter gates in the business.
The inputs that matter
You only really need three: prompt (what to change), model (13 choices - nano_banana, nano_banana_pro, nano_banana_2, gpt_image_2_edit, grok_imagine_edit, seedream_4.5, seedream_5, seedream_5_lite, qwen_edit_plus, flux_2_edit, flux_2_pro, flux_2_flex, flux_2_klein_9b_edit), and fal_key from your fal.ai dashboard. Note the code also checks a FAL_KEY environment variable first and uses it if present, so you don't have to paste your key into every workflow.
The rest are optional and mostly model-dependent:
image1–image10- the source image(s). At least one is required; some models cap how many they'll accept (Grok: 3, Klein: 4, Seedream 5: 10).mask- only honored bygpt_image_2_editfor region editing.width/height- output size. Leave at 0 and most models useaspect_ratio+resolution(auto,16:9,1:1, …, plus0.5K–4Kpresets) instead.num_images(1–6),seed,num_inference_steps,quality- the usual knobs, passed through where the model supports them.enable_web_searchandthinking_level- Nano Banana 2 extras.
The single output is edited_image - a batched IMAGE tensor when num_images is above 1 - so it wires straight into a Save Image or preview node, and from there into the rest of your graph.
Installing it
ComfyUI Manager is the easy path: search ComfyUI-NanoSeed in the Custom Nodes Manager and install. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/comrender/ComfyUI-NanoSeed
pip install -r requirements.txt # literally just requests
Restart ComfyUI. No model files, no CUDA, no 20 GB downloads - you'll see the node under the image/edit category.
Where people get burned
- "Missing API key" - you set one, or you didn't. The README's example
your_fal_key_hereis explicitly treated as "no key", so pasting the placeholder won't get you past the check. - "No images returned from API" - the README's own troubleshooting points here: check your fal balance, or your prompt tripped a safety filter.
- Resolution errors - these are enforced in code, and they're per-model. Seedream 4.5 demands 1920–4096 px on both axes (roughly 3.6–16.7 MP) or it throws; Flux 2 Edit requires 512–2048. Start at the defaults and you'll mostly dodge this.
- Batch limits - Seedream totals inputs plus outputs at max 15, Klein caps
num_inference_stepsat 4–8. These throw hard errors, not silent weirdness, which is honestly the good kind of failure.
One honest caveat: if you just want a good local editor and have the VRAM, Flux 2 Klein locally is free and permanent, and for many editing jobs it's as good as what this node sells. NanoSeed is for the API-only models and for machines that can't run them - it's a convenience fee, and a reasonable one.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Edit the image according to this prompt. | — |
| model | COMBO | 13 options: nano_banana, nano_banana_pro, nano_banana_2, gpt_image_2_edit, grok_imagine_edit, seedream_4.5, +7 | |
| fal_key | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| maskopt | IMAGE | — | |
| widthopt | INT | 00–4096 | — |
| heightopt | INT | 00–4096 | — |
| num_imagesopt | INT | 11–6 | — |
| num_inference_stepsopt | INT | 281–100 | — |
| seedopt | INT | 00–4294967295 | — |
| aspect_ratioopt | COMBO | auto | 15 options: auto, 21:9, 16:9, 3:2, 4:3, 5:4, +9 |
| resolutionopt | COMBO | 1K | 4 options: 0.5K, 1K, 2K, 4K |
| qualityopt | COMBO | high | 3 options: low, medium, high |
| enable_web_searchopt | BOOLEAN | false | — |
| thinking_levelopt | COMBO | off | 3 options: off, minimal, high |
| concurrent_runsopt | INT | 11–8 | — |
| queue_timeoutopt | INT | 90060–3600 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| edited_image | IMAGE | — |