Symbiotica Order Assets
One Render Lane That Runs Once Per Asset — No Loop Node Needed
- order
- asset_names
- categories
- client_prompts
- save_paths
Symbiotica Order Assets is the node that turns "render this entire event" into one press. It takes an order wire and emits the event's assets as four index-aligned lists - one entry per asset, grouped by type (every decoration, then every food). Wire those lists into your render lane and ComfyUI's own list expansion runs the lane once per asset, in order, with no loop node and no second copy of the lane per category. That's the whole point, and it's a genuinely clever use of core ComfyUI behavior.
Why this matters: the alternative - building a lane per asset type and copy-pasting it eight times - is how most people would naively do it, and it's a maintenance nightmare. This pack's philosophy, repeated across the pipeline, is "index-aligned lists, one lane, ComfyUI fans it out." Order Assets is the purest expression of that. The pack is explicit about when to reach for it: use this, not the Auto Packer, when the render works from a dataset reference rather than a packed sheet.
How it works
It reads the order's flat asset list, filters to the requested category (or everything), and emits four parallel lists:
asset_names- one per asset, for filename prefixes.categories- the asset type per asset (feeds Category Prompts and Dataset Reference; all three stay aligned).client_prompts- the client's brief per asset, verbatim from the order sheet.save_paths-month/feature/category/assetper asset, so a save node with this as its filename prefix files each render itself, e.g.October/Mini 1 - Ghostly Goodies/Food - 3 stages/Spookies.
Because the lists are index-aligned, any node that takes all four (or the two or three it needs) sees asset i's name, category, prompt and save path at position i in every list. ComfyUI's list expansion then runs the downstream graph once per index. That's the mechanism, and it's why there's no count widget - the lists are the loop.
The category input is your tuning lever: narrow to "Food" while you're tuning food prompts and you don't spend a render on decorations. A category that matches nothing raises with a list of what the event actually holds - the pack refuses silent empty runs.
Install
ComfyUI Manager → search Symbiotica → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart ComfyUI. No keys or downloads - local list plumbing. It only gets expensive downstream when the lane you fan out is paid (Gemini, Wavespeed), and then per-asset is exactly the granularity you want to control.
Common issues
- The lane runs but everything's the same asset - you didn't wire all four lists (or the ones you did wire aren't the ones feeding the generator). The fan-out only happens where a list feeds into the lane; a single list with three other un-wired ones is just one input fanned out.
- "no 'Food' assets in 'QE 2'" - the category you typed doesn't exist in this event. The error lists what does; copy from there. "All" (or empty) runs everything.
- Renders land in the wrong folders - check
save_pathsis wired into the save node's filename prefix. It's the list that files the run; without it every render shares one name. - Nothing seems to fan out at all - some older ComfyUI versions and some custom render nodes don't expand list inputs. The pack is built for current ComfyUI's list expansion; if your lane uses an exotic node that collapses lists, that node is the bottleneck, not Order Assets.
This is the node to reach for when you have a dataset-reference render (as opposed to a packed sheet) and an event full of assets that all need the same treatment. One lane, one queue press, N renders with correct names and folders. It's the quiet workhorse of the pipeline.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| order | SYMBIOTICA_ORDER | — | |
| category | STRING | One asset type, or All. Narrow to Food while you tune food, without spending a render on decorations. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| asset_names | STRING | One per asset — wire into Save Image's filename_prefix so each render lands under its own name. |
| categories | STRING | Asset type per asset. Feed Category Prompts and Dataset Reference from this — all three stay aligned. |
| client_prompts | STRING | The client's brief per asset, verbatim from the order sheet. |
| save_paths | STRING | month/feature/category/asset per asset — wire into a save node's filename prefix and the run files itself, e.g. 'October/Mini 1 — Ghostly Goodies/Food - 3 stages/Spookies'. |