Symbiotica Asset Focus
Zoom In on One Asset — Its Whole Record, on Its Own Outputs
- order
- asset_name
- category
- client_prompt
- save_path
- order
- event_order
- bucket
- ref_image
- ref_mask
- ref_name
- category_recipe
- width
- height
Symbiotica Asset Focus is the "one asset, whole record" node. Order Assets gives you an entire event as index-aligned lists; this node lets you pick one asset - by clicking it on the node body - and hands you its entire record on separate outputs: name, category, client prompt, save path, references, the works. It's built for the iteration loop: when you're tuning one sprite instead of rendering the event, you want that one asset's data, not four parallel lists you'd have to index by hand.
The pack's framing is worth quoting because it names the problem this solves: "Order Assets emits four index-aligned lists and Dataset Reference three more, so working on a single asset meant an index node per list, all held at the same position by hand. The index is applied once, here, and nothing downstream has a list to index." That's the whole design in two sentences. One more nice touch: leave the asset unset and it emits the whole event instead, so the same node covers both "iterate on one asset" and "run everything."
How it works
You wire in an order (or just a project_path, in which case it does the whole selection itself), optionally narrow by category, and pick an asset. Everything about that asset then fans out onto its own sockets - the strings are meant for core ComfyUI nodes (a save node's filename_prefix, string joins), while the structured order output is for the pipeline nodes that want the full record.
The subtle part is the two order outputs:
order- the incoming order narrowed to just this asset. One per focused asset, so downstream still runs once per asset even when you fan out to several focused ones.event_order- the whole event, unnarrowed. The Auto Packer, Order Assets and the Order Tracker all want the event rather than the asset, and they must not change every time you focus a different one. That's why both exist; they're answering different questions.
The inputs that matter
category- narrow the choice to one asset type, or leave empty for every type.asset- which asset by name. Set by clicking it on the node; typed names work too. Empty means the first.order- optional wire; when present it carries everything (project, event, assets).project_path- only read when no order is wired; the node then does the full selection itself.feature/month- which event of which month, when you're not wiring an order.ref- which of the asset's client references to emit, by filename; set by clicking a thumbnail. Empty = the first.
The outputs beyond the basics: bucket (the asset's sub-kind, e.g. Drinks for a Food row whose Prep line is an empty cup - feeds the Prompt Recipe beside category), ref_image / ref_mask / ref_name (the client reference you clicked, composited onto the sheet grey, its alpha mask, and its filename - what Save Render records as the reference drawn). An asset with no client art gets a one-pixel plate and an empty ref_name rather than an error.
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 plumbing, zero cost per run.
Common issues
- Everything downstream runs for the whole event when you wanted one asset - the
assetfield is empty, which means "first." Click a name on the node body (or type one) to focus. - Pipeline nodes suddenly change when you focus a different asset - you wired the narrowed
orderinto a node that wanted the whole event (Auto Packer, Order Assets, Order Tracker). Wire those fromevent_orderinstead; that's what it's for. - No reference comes through - the asset's client sent no art, so you get the one-pixel plate and an empty
ref_name. That's documented behavior, not a bug. - "This node does the whole selection itself" and it errors - without an order wire you need
project_path(+month/feature) valid, or there's no order to select from.
It's an output node, so you can queue it alone just to look at one asset's record. For iterating on a single sprite across a long event, this is the node the rest of the pack's "one asset" consumers (Dataset Reference, Asset Refs, the Prompt Recipe) are designed to follow.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| category | STRING | Narrow the choice to one asset type, or leave empty for every type. | |
| asset | STRING | Which asset, by name. Set by clicking it on the node; typed names work too. Empty means the first. | |
| orderopt | SYMBIOTICA_ORDER | — | |
| project_pathopt | STRING | The project folder, the one with an orders/ subfolder. Only read when no order is wired in — this node then does the whole selection itself. | |
| monthopt | STRING | — | |
| featureopt | STRING | Which event of that month. Empty means the order's first. | |
| refopt | STRING | Which of the asset's client references to emit, by filename. Set by clicking a thumbnail on the node. Empty means the first, which is also what every OTHER asset gets in an all-assets run. |
Outputs (13)
| Name | Type | Description |
|---|---|---|
| asset_name | STRING | — |
| category | STRING | — |
| client_prompt | STRING | — |
| save_path | STRING | month/feature/category/asset — the same value Order Assets emits, so a save node and a Pick node's save_path both take it. |
| order | SYMBIOTICA_ORDER | The incoming order narrowed to each focused asset — same event, same project, a one-asset assets list. One of these per focused asset, so downstream still runs once per asset. |
| event_order | SYMBIOTICA_ORDER | The WHOLE event, unnarrowed — what an Order Specs emits. The Auto Packer, Order Assets and the Order Tracker all want the event rather than the asset, and they must not change every time you focus a different one. |
| bucket | STRING | Which sub-kind of its category this asset is — `Drinks` for a Food row whose Prep line is an empty cup, empty for everything else. Wire it into the Prompt Recipe beside `category` and it serves `<category> - <bucket>` when the book has one. |
| ref_image | IMAGE | The client reference you clicked, one per focused asset. Composited onto the sheet grey, like Asset Refs. An asset the client sent no art for gets a one-pixel plate and an empty `ref_name`. |
| ref_mask | MASK | That reference's alpha, opaque where the art is. |
| ref_name | STRING | Its filename — what Save Render records as the reference drawn. Empty when the asset has no references at all. |
| category_recipe | STRING | The category plus its canvas in tiles: `Appliance 1x2`. What a recipe is named after. |
| width | INT | The asset's canvas width in pixels, 0 when the sheet names none. |
| height | INT | The asset's canvas height in pixels, 0 when the sheet names none. |