arkennemasis fal · Nano Banana · $0.0398/image
25 closed-model images for a dollar
- images
- image_paths
- description
- info
Nano Banana is Google's Gemini-native image generation - the one that started as an anonymous codename on a leaderboard and ended up as official branding after Google executives kept posting banana emojis. The base model here is the cheap one: $0.0398 an image, which is 25 images for a dollar. Nothing else in this category comes close on price.
It's text-in, image-out. There's no image socket on this node at all - everything editing-shaped lives in the separate Nano Banana Edit node. Get that straight before you start wiring.
Why people put it in a local graph
The KB's API-node chapter splits the reasons for leaving the machine, and this is squarely reason one: the model has no open weights, so local is not an option at any VRAM. You cannot download Nano Banana. Meanwhile the demand inside graphs is enormous - nano banana saturates the corpus cap in the first seven months of 2026, and co-occurs with comfyui in 711 of those threads. The canonical workflow is a closed Google model for the frames and an open model for the motion, and this node is the first half of it.
It's also the best "one-off idea" generator in the pack. Base Nano Banana is fast, knows a bit about the world, and renders short pieces of text convincingly enough for a poster mockup or a thumbnail - which is exactly what most people want from a quarter of a cent... sorry, from four cents.
The settings that change your output
prompt- the text. Nothing exotic; this model rewards plain description over prompt-craft.aspect_ratio- defaults to1:1, not auto. If your image came out square and you wanted a 16:9 thumbnail, that's why.num_images- 1 to 4 per request. All four bill.safety_tolerance- 1 (strictest) to 6 (loosest), default 4. This is your only moderation dial, and it's a real constraint rather than a formality: Google's line enforcesIMAGE_SAFETYfiltering, and the January 2026 policy update tightened famous-IP and celebrity generation further. Notably, routing through a reseller won't help - the filter lives at the model.output_format- png by default; jpeg and webp supported.seed- an integer, with-1leaving it to the model. Useful when you want a reroll to be deliberate rather than accidental.limit_generations- on by default, and it's the one people misread. It's an experimental flag that caps each prompting round at one generation and disregards any instruction in your prompt about how many images to make. If your prompt says "give me four variations" and you got one, that's this checkbox.
Outputs
images - a real IMAGE output, and it can carry a batch (up to num_images), so a num_images=4 request hands four tensors downstream. image_paths - the files under output/fal/fal-ai_nano-banana/, as a string. description - fal returns the model's own text about what it made; useful as an instant caption or as input to a prompt-rewriting chain. info - the JSON receipt: request id, cost estimate, saved files and fal's full answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, or search arkennemasis in ComfyUI-Manager. The pack declares exactly one dependency - httpx, for its Codex nodes - and the fal side uses the standard library, so the install really is a clone and a restart. Then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env next to run_nvidia_gpu.bat. The pack ships no key field on any node, which is the right call: widget values get written into workflow JSON verbatim.
Where people get burned
- "It gave me one image when I asked for four."
limit_generationsis on by default. Turn it off, and raisenum_images. - Square images, unwanted.
aspect_ratiodefaults to1:1on this node - unlike the Nano Banana 2 family, which defaults toauto. - A refusal you can't argue with. That's Google, not the node. Loosening
safety_toleranceto 6 moves the line slightly; it doesn't remove it. - You're feeding it an image to edit. This node has no image input. Use
Nano Banana Edit. - A prompt-optimiser-style surprise. Not here - Nano Banana changes what you asked for when the prompt is vague, not because a rewrite pass ate it.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt to generate an image from. | |
| num_images | INT | 11–4 | The number of images to generate. |
| seed | INT | -1-1–2147483647 | The seed for the random number generator. -1 leaves it to the model. |
| aspect_ratio | COMBO | 1:1 | The aspect ratio of the generated image. |
| output_format | COMBO | png | The format of the generated image. |
| safety_tolerance | COMBO | 4 | The safety tolerance level for content moderation. 1 is the most strict (blocks most content), 6 is the least strict. |
| limit_generations | BOOLEAN | true | Experimental parameter to limit the number of generations from each round of prompting to 1. Set to `True` to to disregard any instructions in the prompt regarding the number of images to generate. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| description | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |