Nodes/Symbiotica/Symbiotica Asset Focus
ComfyUI Node

Symbiotica Asset Focus

Zoom In on One Asset — Its Whole Record, on Its Own Outputs

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
Symbiotica Asset Focus
  • order
  • asset_name
  • category
  • client_prompt
  • save_path
  • order
  • event_order
  • bucket
  • ref_image
  • ref_mask
  • ref_name
  • category_recipe
  • width
  • height
category
asset
project_path
month
feature
ref

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 asset field 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 order into a node that wanted the whole event (Auto Packer, Order Assets, Order Tracker). Wire those from event_order instead; 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.

Categorysymbiotica/pipeline

Inputs (7)

NameTypeDefaultDescription
categorySTRINGNarrow the choice to one asset type, or leave empty for every type.
assetSTRINGWhich asset, by name. Set by clicking it on the node; typed names work too. Empty means the first.
orderoptSYMBIOTICA_ORDER
project_pathoptSTRINGThe project folder, the one with an orders/ subfolder. Only read when no order is wired in — this node then does the whole selection itself.
monthoptSTRING
featureoptSTRINGWhich event of that month. Empty means the order's first.
refoptSTRINGWhich 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)

NameTypeDescription
asset_nameSTRING
categorySTRING
client_promptSTRING
save_pathSTRINGmonth/feature/category/asset — the same value Order Assets emits, so a save node and a Pick node's save_path both take it.
orderSYMBIOTICA_ORDERThe 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_orderSYMBIOTICA_ORDERThe 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.
bucketSTRINGWhich 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_imageIMAGEThe 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_maskMASKThat reference's alpha, opaque where the art is.
ref_nameSTRINGIts filename — what Save Render records as the reference drawn. Empty when the asset has no references at all.
category_recipeSTRINGThe category plus its canvas in tiles: `Appliance 1x2`. What a recipe is named after.
widthINTThe asset's canvas width in pixels, 0 when the sheet names none.
heightINTThe asset's canvas height in pixels, 0 when the sheet names none.