Save Image to Numonic
A Save Image that archives with lineage
- images
- gallery_url
Every folder of generations eventually turns into ComfyUI_00042_.png, ComfyUI_00043_.png, and a mounting sense of regret. This node is the "do something about that" option: a drop-in replacement for the stock Save Image that uploads the real PNG - workflow, prompt, seed and all - to your Numonic library and hands you the gallery link.
It's a sibling of the built-in Save Image, not a successor. It takes the same IMAGE input you'd wire off VAE Decode, so you can run it instead of the stock node (Numonic-only) or alongside it - ComfyUI fans one output into several inputs, so you get a local file and the archive in one run. What you can't do is chain it after a stock Save Image: that's a terminal node with no output socket. Put them next to each other.
How it works
The node reads your Numonic API key from the machine running ComfyUI - never from a widget, more on that in a second - encodes the image tensor to PNG using PIL and numpy (both already shipped by ComfyUI), embeds the prompt and workflow chunks exactly the way core SaveImage does, uploads the bytes to Numonic's API, and returns the gallery link. It loops over the whole batch, so a multi-image generation uploads every frame.
The inputs that matter
images(IMAGE) - typically straight off VAE Decodefilename_prefix(defaultnumonic) - just names the file in your library
That's it. The prompt and workflow are captured automatically in the background; there's nothing to wire for lineage. Output is one gallery_url string - drop it into any "show text" node to see it on the canvas, or just open your Numonic gallery.
The one-time setup (the part people fumble)
You need a Numonic account and an API key. In Numonic → Settings → API Keys, use the "ComfyUI node key" preset - it mints a comfy-ingest key that can only add assets, so if it ever leaks, that's the whole blast radius. Then put it on the host in ~/.numonic/config.json:
{ "api_key": "napi_..." }
or set the NUMONIC_API_KEY environment variable. The key is deliberately not a node widget: widget values get serialized into your saved workflows and embedded into your output files, which means sharing a PNG would leak your key. The config file is read fresh on every save - no restart needed.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/numonic-labs/comfyui-workflow-recovery
or ComfyUI Manager → search "Numonic Workflow Recovery". Restart after. No dependencies to install - this pack adds nothing to your Python environment.
Troubleshooting, the real ones
No Numonic API key found almost always means one of two things: the env var was set in a terminal that never launched ComfyUI (double-clicked .bat, desktop shortcut, service), or Notepad silently saved the config as config.json.txt. The config file sidesteps both. 401/403 means the key is wrong, revoked, or lacks scope - mint a fresh comfy-ingest key. 413 is your storage limit; 429 is rate-limiting, wait a moment and re-run.
Honest take: this node only earns its keep if you're already committed to Numonic as your archive. It's a young, cloud-first product from a small team, and the community's reception has been lukewarm - if "cloud storage" makes you flinch, the recovery node in this pack works fully offline and this one isn't for you. But if you want generations findable by prompt and model instead of buried under numbered PNGs, the setup is twenty minutes once, and then it's automatic.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefixopt | STRING | numonic | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| gallery_url | STRING | — |