Nodes/Protoface/Protoface MAI Image 2.5 · Edit Image
ComfyUI Node

Protoface MAI Image 2.5 · Edit Image

One image in, one edit out

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface MAI Image 2.5 · Edit Image
    • image
    • mask
    • files
    • run id
    ◄prompt►
    ◄image▾►
    ◄output_formatpng►
    ◄sizeauto►
    ◄generation_id0►
    ◄request_scope►

    What it is

    Microsoft's MAI Image 2.5, in edit mode, wrapped by the Protoface pack. You give it one picture and an instruction - "make the label read ARBOR DAY", "swap the background to a plain studio sweep", "remove the person on the left" - and it comes back with an edited image as a native IMAGE tensor you can wire into whatever's next.

    Reach for it when the edit is described in words and the whole image should stay coherent, as opposed to a masked inpaint where you're telling a local sampler exactly which pixels to redraw. The tradeoff is the usual API one: per-call cost, your image goes to a server, and the result is what the provider's model decided rather than what your checkpoint and LoRA would have done. If you have a local FLUX or Qwen setup with a favourite inpaint workflow, this node is for the jobs where setting that up is more work than it's worth - a quick product shot, a slide graphic, a mockup.

    The nice detail: the node outputs a native mask as well as the image. For a text-driven edit you rarely need it, but it means the node slots into mask-aware graphs instead of dead-ending at Save Image.

    The inputs

    prompt is the instruction, plain natural language. If you've spent months writing CLIP-flavoured tag soup, unlearn it here - these edit models respond better to a sentence including the word "keep": "keep the lighting and the product, change the backdrop to charcoal seamless".

    image is a single asset. Singular. This is the structural difference from sibling nodes in the pack that take images plural with a reference list - MAI edit gives you exactly one input frame, so any multi-image compositing has to happen on your side first, or in a different model's node. Easy mistake when you're copying a wired-up graph.

    output_format defaults to png, which is what you want while iterating; switch to jpg when you're generating hundreds of variants and care about disk.

    size is labelled "the aspect ratio of the edited image" and defaults to auto - so despite the name it's a shape picker, and auto means "match what I gave you." Leave it there unless you specifically want a re-frame, because a non-auto ratio is a request to change the composition as well as the content.

    generation_id is the money field: fixed reuses or resumes the same paid job, incremented buys a new generation. It is not a seed, and there's no seed here at all - the model's randomness isn't exposed, which is a real ergonomic difference from the P-Image and Recraft nodes. You iterate by rewording the prompt, not by re-rolling.

    request_scope is auto-assigned per node in the UI. Headless queueing has to supply a stable unique value or the node refuses to submit.

    Outputs

    image (IMAGE, list), mask (MASK, list, inverted-alpha semantics like the rest of ComfyUI), files (PROTOFACE_FILE, list - the untouched originals, useful when you asked for png and want to keep alpha), and run id. All the media outputs are lists; ComfyUI maps downstream nodes over them, so a single node handling several results doesn't need a loop.

    run id is worth wiring to a text display if you're doing batch work. It's the only handle you have on a job once the browser's closed.

    Install

    Nothing to download - the model isn't yours, that's the point. Requirements are ComfyUI 0.41.0+, Python 3.10+, and four packages:

    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
    

    (httpx, jsonschema, Pillow, av>=14.) ComfyUI-Manager users: search Protoface, install protoface-nodes, restart, reload the browser tab. Then click Protoface in the lower-right and paste a key from your Protoface account.

    Where people get bitten

    Wiring a batch into image throws expects one asset; split the image/audio batch first - that error string comes straight out of the adapter and it's telling you the truth: one frame per call.

    A missing key after a restart looks like an auth failure; the key is memory-only by design, so re-enter it or set PROTOFACE_API_KEY_FILE.

    And the one that actually costs money: if a job times out or the browser drops, do not bump generation_id to "retry". Keep it, requeue, or use Protoface Resume Run with the run id. Also keep ~/.cache/protoface-comfyui around - it holds the journal that makes that recovery possible, and deleting it mid-job is how people end up paying twice for one picture.

    CategoryProtoface/Image/microsoft

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRINGThe instruction describing how to edit the input image.
    imageCOMBOA public URL, a data URI, or an asset id.
    output_formatCOMBOpngThe format of the edited image.
    sizeCOMBOautoThe aspect ratio of the edited image.
    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—