Nodes/ComfyUI Deploy/External Face Model (ComfyUI Deploy)
ComfyUI Node

External Face Model (ComfyUI Deploy)

Feed ReActor face-swap models into a deployed workflow — without hand-copying files

By BennyKok·Created 3 years ago·Updated 9 months ago· 1,529
External Face Model (ComfyUI Deploy)
    • path
    â—„input_idinput_reactor_face_modelâ–º
    â—„default_face_model_nameâ–º
    â—„face_model_save_nameâ–º
    â—„display_nameâ–º
    â—„descriptionâ–º
    â—„face_model_urlâ–º

    Face-swap workflows built on ReActor need a face model file on the machine - one of those small .safetensors files that encode the target face. "External Face Model" is the ComfyUI Deploy input node for exactly that: it can download a face model from a URL into the right folder, or let you pick from the face models already installed, and it returns the filename for the ReActor node to use.

    The deployed-workflow logic is the same as the other External inputs: the person calling your API shouldn't have to SSH into the box to drop a file in models/reactor/faces. This node makes the face model an input - the caller (or your backend) supplies a URL, and the node handles placement. It's the face-swap half of the "let users pick their own subject" pattern.

    How it works

    If face_model_url starts with http, the node downloads it into ComfyUI's reactor/faces folder and returns the filename. If you set face_model_save_name, it uses that name and - here's the good part - checks whether the file already exists and skips the download if it does. No save name? It invents a uuid filename and downloads every time. If there's no URL, it just returns whatever default_face_model_name holds.

    Inputs and output

    • input_id - default input_reactor_face_model. The key callers use to address this input.
    • default_face_model_name - an installed face model to use when no URL is supplied.
    • face_model_save_name - pin a filename so repeated calls reuse the downloaded model instead of re-downloading.
    • face_model_url - where to fetch the model from.
    • Optional: display_name, description.

    Output: path (wildcard *), wired into the ReActor node's face model input.

    Installing it

    Same pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/BennyKok/comfyui-deploy.git
    

    Restart ComfyUI, or install "ComfyUI Deploy" via ComfyUI Manager. Note this node assumes ReActor's folder layout - it writes to the reactor/faces path registered by the ReActor pack. If ReActor isn't installed, there's no folder to write to.

    Where people get burned

    The dependency on ReActor is the first trap. This node's whole job is placing files where the ReActor pack expects them, and if you don't have ReActor installed (or it registers a different folder name), the download has nowhere sensible to land. Install the ReActor pack alongside it before wiring this up.

    Second, the save-name check only fires when you provide one. Without face_model_save_name, every request with a URL downloads a fresh uuid-named copy into your faces folder - same disk-filling footgun as the checkpoint node, just smaller files. Pin a save name. And a word on the use case itself: face-swap endpoints are exactly the kind of thing you want behind auth and with a clear terms-of-service story for your callers. The node makes it technically trivial; the responsibility is on you.

    Category🔗ComfyDeploy

    Inputs (6)

    NameTypeDefaultDescription
    input_idSTRINGinput_reactor_face_model—
    default_face_model_nameoptSTRING—
    face_model_save_nameoptSTRING—
    display_nameoptSTRING—
    descriptionoptSTRING—
    face_model_urloptSTRING—

    Outputs (1)

    NameTypeDescription
    path*—