Symbiotica Pick
The triage node that never overwrites your work
- images
- picked
- save_path
- edit_save_path
- for_edit
Every generator run gives you variants, and you keep one. In a plain ComfyUI graph that means manually dragging the good ones out of the output folder - until the next run overwrites nothing but you've lost track of which is which. Symbiotica Pick is the triage step that fixes that: every image wired into it gets filed in the node's own buffer, drawn as a thumbnail on the node body, and only the ones you tick leave the node.
It's the middle of the pack's generate → pick → edit → pick → background-removal rhythm, and it's genuinely well built for that. Three separate runs of the same generator stack up as three candidates instead of stomping on each other.
How it works - the part people find surprising
Pick writes nothing and stores nothing. The images it shows are read off disk, where your Save Image node already put them. The images input's actual value is never used - its only job is to make this node run after the generator, so a fresh render is listed in the same queue it was made.
The one thing it does write is your approval: ticking a tile also writes _final_from.<render>_00001_.png next to the render, and un-ticking deletes it. That file is how the rest of the pipeline knows something was approved - a tick lives on the node's widget, which nothing else on the canvas can read, so an approval another node has to see has to be a file.
The inputs that matter
save_path- the folder this node lists. Wire Asset Focus'ssave_pathhere (the same string your save nodes take) and the two can't disagree.mode-multiplefor picking a set,singlefor editing, where ticking replaces the previous pick instead of adding to it.names- filter the listing. An entry with an extension is one exact file; one without is a save prefix (_base,edits), so it lists exactly what a Save Image with that tag wrote. Empty lists the whole folder.show- matters only when another picker feeds this one.approvedlists what that picker ticked;editslists the files saved from those ticks.
The outputs
picked- the IMAGEs you ticked. This is the one you wire onward into the edit or the next stage.save_path- the path it lists, ready to paste into a Save Image'sfilename_prefix.edit_save_path-save_pathmarked with the render you picked, for the Save Image that writes edits of it.for_edit- the images you marked with the ✎ button, as their own lane.
Install
The pack installs as one unit - 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
Then restart. No API key, no model download for this node - it reads folders and shows thumbnails.
Gotchas
Since images is optional on purpose, you can mute the generator branch once picks are made and queue the edit stage without re-firing a paid render. That's the move people discover late and love. Resting on a thumbnail floats it big beside the grid, so you can judge a render without opening it in a tab - don't skip that, it's half the point. One caveat: this is a niche production-pipeline pack with little community chatter, so if something misbehaves the README (which is unusually thorough) beats a search.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| imagesopt | IMAGE | Wire the save or preview node this stage's images come out of. Its VALUE is never used — the images are read off disk — but the link makes this node run after it, so a fresh render is listed the same queue it was made. Wired to another Pick, this node lists exactly what that one ticked. | |
| save_pathopt | STRING | Wire Asset Focus's `save_path` here — the same string the save nodes take, so this node lists exactly where they write, and `stage` names a step under it. A relative path resolves under ComfyUI's output directory; a save node's own prefix works too (`…/Food - 3 stages/Spookies` lists that asset's `Spookies_*` files). | |
| selectionopt | STRING | — | |
| viewopt | STRING | — | |
| modeopt | COMBO | multiple | Whether this step takes a set or one image. `single` is for editing — you edit the image you are working on, so ticking replaces the previous pick instead of adding to it. |
| stageopt | STRING | Deprecated — review a step by chaining pickers with `show` and `edit_save_path` instead; the panel hides this widget when it is empty. Kept because widget values restore by position in saved graphs. Which step of this asset to list, as a name under the asset's own folder: `edits` lists `…/<asset>/edits_00001_.png`. Empty lists the asset's own renders, which is where a save node writes them first. Wire the `save_path` output into the Save Image that fills this stage and the two cannot disagree. | |
| namesopt | STRING | Which files out of the folder. An entry with an extension is one exact file — wire Asset Refs' names to see only THIS asset's client references. An entry without one is a save prefix: the same tag the Save Image in this lane was given (`_base`, `edits`) lists exactly what it wrote. Empty lists the whole folder. | |
| showopt | COMBO | approved | Only matters when another picker feeds this one, and does nothing otherwise. `approved` lists exactly what that picker ticked. `edits` lists the files saved FROM those ticks instead, which is how you review the edits of one approval — wire that picker's `edit_save_path` into the Save Image in between, so each edit records the render it came from. |
| edit_selectionopt | STRING | — | |
| subfolderopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| picked | IMAGE | — |
| save_path | STRING | The path this node lists, ready for a Save Image node's `filename_prefix` — so the node that WRITES this stage and the node that READS it are named in one place. |
| edit_save_path | STRING | `save_path`, marked with the render that was picked — for the Save Image that writes EDITS of it. The mark is what lets a later picker list the edits of one approval, which no set of ticks can do: an edit is a file named after the tick was made. With no single pick to name, this is `save_path` and the edit carries no mark. |
| for_edit | IMAGE | The images marked for edit on the panel (✎), as their own lane — wire into the edit chat/model. Approve ticks flow out `picked` unchanged. |