Nodes/Protoface/Protoface Qwen Image 3.0 · Edit Image
ComfyUI Node

Protoface Qwen Image 3.0 · Edit Image

Qwen Image 3.0 Edit Without the 20GB Download

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Qwen Image 3.0 · Edit Image
    • image
    • mask
    • files
    • run id
    ◄prompt►
    ◄images▾►
    ◄resolution1k►
    ◄aspect_ratio▾►
    ◄enable_prompt_expansiontrue►
    ◄seed▾►
    ◄generation_id0►
    ◄request_scope►

    If you've spent any time on Qwen-Image-Edit, you know the shape of the workflow: load a photo, type "change her jacket to olive canvas, keep the face", wait. Qwen Image 3.0 is the next model in that line, and Alibaba did not open-weight it. That's the whole reason this node exists - it's an editing model you can't download, wired into a graph that behaves like a local one.

    What you're actually getting

    Alibaba's Qwen-Image editing line is the one people still run locally (2511 on Apache 2.0 weights, the thing with the drift fix and the LoRA support), and the read on the family is that its real strength is following a specific instruction while leaving the rest of the frame alone. Qwen Image 3.0 keeps that behaviour and adds stronger prompt following and cleaner detail. There are no weights to grab, so the only path to it is an API - the model isn't on your machine, the node pretends it is.

    The practical appeal is unglamorous: no 20GB checkpoint, no quantization rabbit hole, no thirty-second wait on a 3060. You get the output as a normal IMAGE tensor and keep compositing, upscaling and masking locally.

    How the mechanism works

    Protoface doesn't ship one hand-written class per model. At startup it reads a bundled JSON catalog (44 models, 95 tasks) and generates a native ComfyUI V3 node for each model/task pair, with controls built from that model's public request schema. So this node is the same shared code as every other Protoface node - what differs is the schema it was generated from.

    When you queue, it validates your payload against that schema before spending anything, converts your tensors to PNG, uploads any media it hasn't seen before (uploads are cached by content hash), submits the job, polls, then downloads the result into its own state directory and decodes it into ComfyUI types. Images come back as a list plus a matching mask. There's a progress bar and an interrupt hook, so a cancel actually hits the HTTP layer - though Protoface is upfront that cancellation is best effort and doesn't imply a refund.

    The controls you'll actually set

    prompt is the edit instruction and it takes Chinese and English, capped at 800 characters. images is where your source goes - up to three of them, and the slots grow as you connect assets. If you connect a Load Image node holding a batch of four, the node refuses with "expects one asset; split the image/audio batch first"; that's deliberate, not a bug.

    resolution is a 1k/2k tier, and the tooltip is honest about what it is: the billing tier. aspect_ratio is optional - leave it on Default and the edit follows your first input image's ratio, which is what you want most of the time. enable_prompt_expansion defaults to on and quietly rewrites your prompt with an LLM before the edit. Great for loose vibes, bad for "move the left hand exactly 12 pixels". Turn it off when precision matters.

    seed is optional and takes -1 (random) or an explicit 0–2147483647. generation_id is the one you should read twice: it is not a seed. Keep it fixed and the pack reuses or resumes the same paid job; increment it and you've bought a new generation.

    Outputs

    image is a list, so downstream nodes map over it automatically. mask comes from the result's alpha channel, inverted in the ComfyUI convention - wire it straight into an inpaint or composite. files carries the original downloaded assets (including transparent PNGs) for the Protoface Save File node. run id is a plain string you can hand to Protoface Resume Run or paste into a support ticket.

    Install

    Manager is the easy path: search Protoface, install protoface-nodes, restart, reload the browser. If the registry index hasn't caught up:

    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
    

    That pulls httpx, jsonschema, Pillow and av - PyAV is the one that matters for video results, so it's worth confirming it installed with ComfyUI's own interpreter rather than a system Python. Needs ComfyUI 0.41.0+ and Python 3.10+. Then click Protoface in the lower-right corner and paste your account key; it lives in server memory and won't survive a restart, which is why headless rigs use PROTOFACE_API_KEY_FILE.

    Where people get burned

    "API key required" right after a restart. Expected. The interactive key is memory-only by design, so nothing is stored in your workflow. Re-enter it, or set the env var.

    Editing the wrong image. With three refs connected and no explicit aspect_ratio, the model may work from the second or third. Be explicit about which image the prompt refers to.

    Requoting an unchanged graph and paying twice. If you changed the prompt, the assets or any parameter, that's a new request by definition. Only a byte-identical requeue resumes the journaled job - that's what keeps a crash from costing you money, and it's also why "just press queue again" is safer than it looks.

    Comfy Cloud won't work. It doesn't permit arbitrary custom nodes, and Protoface bills your Protoface account directly rather than using Comfy credits.

    CategoryProtoface/Image/alibaba

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGText prompt describing the desired edit, supports Chinese and English (max 800 characters)
    imagesCOMBOPublic URLs, data URIs, or asset ids.
    resolutionCOMBO1kOutput resolution tier used for billing.
    aspect_ratioCOMBOAspect ratio of the generated image. Leave empty to use the first input image ratio.
    enable_prompt_expansionBOOLEANtrueWhether to enable intelligent prompt expansion
    seedCOMBORandom seed for reproducibility (-1 for random, 0-2147483647 for specific seed)
    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—