Nodes/Protoface/Protoface Nano Banana 2 · Text to Image
ComfyUI Node

Protoface Nano Banana 2 · Text to Image

The closed model that made everyone stop arguing about prompts

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Nano Banana 2 · Text to Image
    • image
    • mask
    • files
    • run id
    ◄prompt►
    ◄resolution1k►
    ◄aspect_ratio▾►
    ◄enable_image_searchfalse►
    ◄enable_web_searchfalse►
    ◄output_formatpng►
    ◄seed▾►
    ◄generation_id0►
    ◄request_scope►

    Why a closed image model earns a node

    Local generation has a lot going for it: it's free after the electricity, nothing leaves your machine, and nobody can change the filter on you overnight. What it doesn't have is Gemini's instruction-following. Nano Banana 2 - the February 2026 Gemini 3.1 Flash Image release - sits in the middle of Google's image stack: not the 4K-thinking flagship, but the fast one that still understands a long, specific, awkward sentence and produces exactly that.

    That's the actual pitch. Not "better renders" - local models render beautifully. Better obedience. When your prompt is "the same bottle but turned 30 degrees, label in French, softbox from the left, no shadow on the cap", the closed model just does it, and you stop writing three ControlNets to say the same thing.

    This node is the text-to-image task from Protoface, a beta pack that turns hosted model APIs into ComfyUI nodes. Paid per run, executed remotely, no weights involved.

    How it works

    The pack generates nodes from each provider's public request schema, so the controls here mirror the API: prompt, resolution tier, aspect ratio, search toggles, output format, seed. On queue, the shared adapter validates the payload, submits the job against your Protoface key, polls it, downloads the result and casts it as a native IMAGE (plus MASK), alongside the original files and a run id.

    The mechanism you should actually internalise is the generation_id field. It's a paid-request identity, not a seed. Keep it fixed and requeueing returns the job you already paid for. Increment it and you're buying a new generation. Change the prompt and you're buying a new generation regardless - the id only protects an unchanged request.

    The inputs that matter

    prompt - the one that does the work. Write it like you're instructing a photographer, not tagging a LoRA. Nano Banana's whole advantage shows up in long, specific sentences.

    resolution (1k default) and aspect_ratio are the billing-adjacent controls. Higher tiers cost more and get you more pixels; the ratio is what your downstream crop and upscale nodes will assume. Get these right before you fall in love with a take.

    output_format defaults to png. PNG keeps you lossless for a downstream upscale; JPEG is fine for a moodboard and much smaller.

    enable_image_search and enable_web_search both default off. Turning them on lets the model pull real-time references - useful for "current-model car, correct badge" prompts, useless (and slower) for anything else. They're the most interesting toggles on the node and the easiest way to get a surprise in the output.

    seed is a media-style control, not a bare number: Default omits it, Set supplies one, and Null where supported sends an explicit null. If you want reproducibility, Set it - but don't expect identical output across a prompt edit.

    Outputs

    image is a native IMAGE list - Google's image endpoints can return more than one candidate, and heterogeneous sizes are allowed. ComfyUI maps connected downstream nodes over the list, so one Save Image becomes N saves.

    mask is a native MASK on the same per-result basis, with inverted-alpha semantics per the pack's docs. That's the one you want if you're compositing or cutting the subject out.

    files holds every original downloaded asset as PROTOFACE_FILE, and run id is the string for Protoface Resume Run when a job outlives your session.

    Install

    Manager: search Protoface, install protoface-nodes, restart, reload the browser. Manual, from the ComfyUI directory:

    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
    python -m pip install -r custom_nodes/protoface/requirements.txt
    

    ComfyUI 0.41.0+ and Python 3.10+; install into ComfyUI's own interpreter. Then click Protoface in the lower-right corner and paste a key from your Protoface account - this bills that account directly and does not spend Comfy credits, which surprises people who assume all hosted nodes are Partner Nodes.

    Where people get burned

    Assuming it's the official Comfy API node. It isn't. Different billing, different key, different pack. If you already pay for Comfy credits, they won't help here.

    Wondering where your content policy went. It didn't. Prompts, reference images and outputs go to Google and are subject to Google's moderation - this is the category's defining tradeoff, and there's no local patch for a closed model's refusal.

    Requeueing to reroll and getting the same image. Fixed generation_id, unchanged inputs - that's a cached job, by design. Increment it to buy a new take.

    No nodes in the menu at all. That's a pack discovery problem: confirm custom_nodes/protoface/__init__.py exists, check the startup log for import errors, make sure there's only one installed copy, restart, reload.

    CategoryProtoface/Image/google

    Inputs (9)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation.
    resolutionCOMBO1kThe resolution of the output image.
    aspect_ratioCOMBOThe aspect ratio of the generated media.
    enable_image_searchBOOLEANfalseIf enabled, the model will use image search to enhance the generation with real-time information.
    enable_web_searchBOOLEANfalseIf enabled, the model will use web search to enhance the generation with real-time information.
    output_formatCOMBOpngThe format of the output image.
    seedCOMBO2 options: [object Object], [object Object]
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (4)

    NameTypeDescription
    imageIMAGE—
    maskMASK—
    filesPROTOFACE_FILE—
    run idSTRING—