Nodes/Embeddr ComfyUI Extension/Embeddr Upload (V2)
ComfyUI Node

Embeddr Upload (V2)

Save the image you just made — and record who its parents are

By embeddr-net·Created 9 months ago·Updated 5 months ago· 0
Embeddr Upload (V2)
  • image
  • parent_ids
  • options
  • artifact_ids
auth_ticket

Upload is where the Embeddr loop closes: you load artifacts from your library, work on them, and this node puts the result back. Give it an IMAGE and it uploads a PNG to your Embeddr library, returning the new artifact's ID. Once it's in the library, that image is searchable, reference-able, and - thanks to the lineage inputs - connected to everything that made it.

It's an output node, so it lives at the end of a workflow the way Save Image does, except the image goes to your self-hosted library instead of only your output folder. The classic Embeddr workflow is a closed loop: Load Artifact → img2img/sampler → Upload. Your library becomes both the input tray and the archive.

The inputs that matter

  • image - the only required input. A batch is fine: the node uploads each image in the batch individually and returns all their IDs joined together.
  • parent_ids - the lineage hook, in the custom EMBEDDR_ARTIFACT_ID type. Feed it the output of Merge IDs (or a single Load Artifact's artifact_id_out) and the upload records who this image's parents were. This is the single most Embeddr-y input in the pack - it's the difference between "a folder of images" and "a family tree of images."
  • auth_ticket - optional per-user ownership ticket for multi-user setups. Single-user installs ignore it.
  • options - an Upload Artifact Options object, for storage provider/path overrides, tags, and ingest control. Leave it unwired unless you need those.

The output is artifact_ids - the uploaded IDs (comma-joined if you fed it a batch), ready to wire into another workflow or store for later.

How it works - and the upload mode knob

The node converts each image tensor to a PNG, packages it with metadata (parent IDs, related-artifact IDs, tags, and the ingest/embedding flags from your options), and POSTs it to /api/v1/plugins/embeddr-comfyui/upload on your server. The response ID is returned per batch item; a failure on one item is logged but doesn't kill the whole run, so you can end up with partial results - worth knowing if you batch a lot.

The upload_mode setting (default require) decides what happens when the server is unreachable: in require mode the upload fails loudly; set EMBEDDR_UPLOAD_MODE=best_effort and the node health-checks first and skips cleanly instead of erroring. For an always-on library, require is right; for a workflow you might run while the server's down, best_effort keeps the graph from exploding.

Install

Pack install as ever: embeddr serve running, pack via ComfyUI Manager or a release into custom_nodes, restart ComfyUI. Only requests is declared. Everything goes to your own localhost server - no cloud, no API key, no third-party data flow - which is the whole appeal of self-hosting the stack.

CategoryEmbeddr

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
parent_idsoptEMBEDDR_ARTIFACT_IDParent artifact UUIDs
auth_ticketoptSTRINGEphemeral auth ticket for per-user ownership
optionsoptEMBEDDR_UPLOADARTIFACT_OPTSUpload Artifact Options

Outputs (1)

NameTypeDescription
artifact_idsEMBEDDR_ARTIFACT_ID