Nodes/comfyui-model-manager-nodes/Upload Image (Model Manager)
ComfyUI Node

Upload Image (Model Manager)

Push generated images back to the Model Manager server, metadata included

By blackpaw-studio·Created 7 months ago·Updated 7 months ago· 0
Upload Image (Model Manager)
  • images
  • lora_info
  • sampler
  • scheduler
  • status
upload_to
model_name
version_specificfalse
prompt
negative_prompt
seed0
steps0
cfg_scale0.0

Every other node in this pack pulls models from your Model Manager server. Upload Image (Model Manager) goes the other way: it pushes images back. Feed it the output of a VAE Decode and it uploads each image to a model on the server, bundled with its generation metadata - the prompt, negative prompt, seed, steps, CFG, sampler, scheduler, the LoRAs used, even the full workflow. Think of it as closing the loop: generate against a model, send the results home for a gallery, a dataset, or a training set.

The inputs that matter

  • images - the IMAGE tensor straight out of VAE Decode. The node encodes each frame to PNG and uploads it individually.
  • upload_to - the target type, either Diffusion Model or LoRA. It's a toggle, and it changes which model list the model_name dropdown pulls from.
  • model_name - which model (or version) on the server to attach the images to, modelId@versionId:name style.
  • version_specific - boolean. When false, the node drops the version ID and uploads to the model as a whole. When true, the image is tied to the specific version you picked. Defaults to false; flip it if your server organizes images per version.

The metadata fields are all optional: prompt and negative_prompt (multiline strings), seed (INT), steps (INT), cfg_scale (FLOAT), and sampler / scheduler (loosely typed - wire in text or values from your sampler). The lora_info input takes the pack's MM_LORA_INFO list so the LoRAs used in this very graph get attached - which is where Merge LoRA Info (Model Manager) earns its keep if you applied LoRAs across multiple loaders. If you don't set the metadata fields, they're simply left off the upload; zeros are skipped, not written.

How it works

Each image in the batch is encoded to PNG bytes and POSTed to /api/v1/models/{id}/images with the metadata as form fields and your API key as a Bearer token. The full ComfyUI workflow JSON is grabbed automatically from the graph (via the node's hidden extra_pnginfo) and stored with the image - nice for provenance if the server can render it later. The node returns a single status string, like Uploaded 3 images to model 42, so you can read the result directly or feed it to a text node.

Install

ComfyUI Manager (search comfyui-model-manager-nodes) or:

cd ComfyUI/custom_nodes
git clone https://github.com/blackpaw-studio/comfyui-model-manager-nodes
cd comfyui-model-manager-nodes
pip install -r requirements.txt

Restart and connect (Connect to Model Manager button with URL + API key; MODEL_MANAGER_API_URL / MODEL_MANAGER_API_KEY env vars or config.yaml also work). The pack only needs requests and pyyaml, though this node leans on Pillow and NumPy, which ComfyUI already ships.

Troubleshooting

  • Error: not connected to Model Manager - you skipped the connect step. The in-node connect button is the fastest fix.
  • Error: invalid model selection - the model_name dropdown is showing (not connected) or a stale value; reconnect and pick again.
  • Uploads fail one by one mid-batch. The node reports which index failed, so check your API key's permissions on that model, and whether the server accepts images for it at all.
  • Metadata shows up empty on the server. Leave a field at 0/blank and it's omitted on purpose. If the server isn't storing what you expect, double-check the field names your server version expects - this client sends prompt, negativePrompt, seed, steps, cfgScale, sampler, scheduler, loras, and comfyWorkflow.

This is the node you reach for when the server isn't just a storage locker but a working hub - upload your generations, keep the recipe attached, and you never have to reconstruct how an image was made later.

Categoryloaders/model-manager

Inputs (12)

NameTypeDefaultDescription
imagesIMAGE
upload_toCOMBO2 options: Diffusion Model, LoRA
model_nameCOMBO1 options: (not connected)
version_specificBOOLEANfalse
lora_infooptMM_LORA_INFO
promptoptSTRING
negative_promptoptSTRING
seedoptINT00–18446744073709550000
stepsoptINT00–10000
cfg_scaleoptFLOAT0.00–100
sampleropt*
scheduleropt*

Outputs (1)

NameTypeDescription
statusSTRING