Nodes/Symbiotica/Symbiotica Save Render
ComfyUI Node

Symbiotica Save Render

Saves the render AND the recipe that made it

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
Symbiotica Save Render
  • images
  • order
  • files
  • prompt_shas
asset_names
categories
system_prompts
subfolderrenders
project_path
client_prompts
reference_names
seed0

A plain Save Image is amnesia in PNG form. You get a file, and when the client says "this one came out flat," you have no way to answer why - the prompt may have changed twice since that render. Symbiotica Save Render is the pipeline's memory: it files each render under its asset name AND records what produced it - the architect prompt's hash, the version of every rule block that composed it, the reference drawn, and the seed. The record goes in the PNG metadata and in <project>/prompts/renders.jsonl.

That's the part every other save node skips, and it's the whole pitch. Feedback has something to attach to.

How it works

The node takes the images plus the per-asset strings that describe them: names, categories, the actual system_prompts sent (per-asset, from Category Prompts), and the project path. It saves each image under month/feature/category/asset in the project, embeds the record in the PNG, and appends a line to renders.jsonl. The prompt_shas output hands downstream nodes the prompt's hash per image - that's the handle feedback uses to name which prompt a comment is about.

There's also a pipeline-integration detail worth knowing: the node declares what it wrote as the run's output images. An API caller reads a run's renders from /history, and only what a node declares gets there - so this node's save is what a headless order runner actually sees as the deliverable.

The inputs

  • images (required) - the renders.
  • asset_names / categories (required) - from Order Assets; they name the file and the record.
  • system_prompts (required) - Category Prompts' per-asset output, the text actually sent.
  • subfolder - default renders, under the project.
  • project_path (required) - where the record lives.
  • client_prompts, reference_names, seed, order (optional) - the rest of the provenance, when you have it.

The outputs

  • files - the paths written.
  • prompt_shas - the architect prompt's hash per image.

Install

Standard pack install - search Symbiotica in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt

Restart after. No API key, no model.

Gotchas

The record is only as good as the wires you give it. Skip system_prompts and the hash means nothing; skip reference_names and you lose the provenance chain. This node is built to sit at the end of the pack's own pipeline (Order Assets → Category Prompts → sampler → here), so wiring it mid-pipeline with half the inputs empty gets you a fancy file saver. Also remember the JSONL is append-only - it's a log, not a database, so don't build anything that assumes unique keys on it. If a render's provenance matters for a client dispute, that's exactly the case where you want every field filled.

Categorysymbiotica/pipeline

Inputs (10)

NameTypeDefaultDescription
imagesIMAGE
asset_namesSTRINGOrder Assets' asset_names — names the file and the record.
categoriesSTRING
system_promptsSTRINGCategory Prompts' PER-ASSET output, the text actually sent.
subfolderSTRINGrenders
project_pathSTRING
client_promptsoptSTRING
reference_namesoptSTRING
seedoptINT00–1152921504606847000
orderoptSYMBIOTICA_ORDER

Outputs (2)

NameTypeDescription
filesSTRING
prompt_shasSTRINGThe architect prompt's hash per image — the handle feedback uses to name which prompt it is about.