PixlStash Picture Saver
Save generations straight back into your vault — with the workflow baked into the PNG
- images
- pixlstash_project
- pixlstash_set
- pixlstash_character
- picture_ids
The reverse of the loader, and the node that closes the loop. PixlStash Picture Saver takes an IMAGE batch, encodes each frame to PNG, uploads it to your PixlStash vault, and optionally files it under a project, a set, and/or a character. It's the "and save the good ones back" half of every workflow the pack's README demos - load references, generate, gate out the misses, save the keepers with their metadata intact.
How it works
For each frame it encodes a PNG (it does this locally, so your images are never sent as raw tensors), embeds the ComfyUI workflow and prompt JSON into the PNG's tEXt chunks when save_workflow is on - the same "workflow included" convention the ecosystem expects - then uploads via PixlStash's import endpoint and polls until each import finishes. Results are returned as a comma-separated string of picture IDs. Duplicates that already exist in the vault are detected and skipped as "new" but still get processed for set/character assignment, so re-saving the same image doesn't pollute your library.
The node is also the reason you should care about token scope. Importing and assigning are write operations, so a read-only token fails here - and the error message is explicit that you need write scope. If you assign pictures to a character, the server queues face extraction, which means the character's reference pool gets richer every time you save a good render of them.
The inputs that matter
images(required) - your IMAGE batch.filename_prefix- the local filename prefix (defaultcomfyui); it's sanitized and confined to ComfyUI's temp directory before upload, so even a hostile workflow can't path-traverse your disk.save_workflow- embed workflow + prompt JSON into the PNG (default on). This is what makes your saved images reproducible later.pixlstash_project/pixlstash_set/pixlstash_character(optional) - where to file the imports. Wire these from the matching loaders, or pass them through from a Picture Loader to save into the same context it loaded from.
Output: picture_ids (STRING) - comma-separated IDs of successfully imported pictures. Handy if you're building a workflow that references what it just saved.
Install and gotchas
Pack install as usual - ComfyUI Manager → ComfyUI-PixlStash, or clone into custom_nodes, restart, configure Settings > PixlStash. Dependencies: requests and Pillow only. It needs a running PixlStash server (formerly PixlVault) with a write-scope token.
The failure mode people actually hit: assigning to a character fails with a "face extraction worker is not running" error - the pack even recognizes the server's 400 and rewrites it into a friendly message. Start the face-extraction worker in PixlStash and retry. And as everywhere in this pack: multi-user ComfyUI is unsupported, so run single-user.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | comfyui | Prefix for the generated PNG filenames. |
| save_workflow | BOOLEAN | true | Embed the ComfyUI workflow and prompt JSON into PNG tEXt chunks before uploading. |
| pixlstash_projectopt | PIXLSTASH_PROJECT | Assign pictures to this project at import time. | |
| pixlstash_setopt | PIXLSTASH_SET | Add pictures to this set after import. | |
| pixlstash_characteropt | PIXLSTASH_CHARACTER | Assign pictures to this character after import. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| picture_ids | STRING | — |