Nodes/Sonder Editor/Sonder Reference Selector
ComfyUI Node

Sonder Reference Selector

The Sonder Reference Selector decides whether your reference branch runs at all

By SonderSaid·Created 2 months ago·Updated 2 days ago· 2
Sonder Reference Selector
  • project
  • reference_set
  • has_reference
  • reference_strength
reference_lanes0

If you found this node in a workflow JSON, here's the honest first thing to know: it does nothing on its own. Sonder Reference Selector is part of ComfyUI-Sonder-Editor, the timeline video editor that lives inside ComfyUI, and it only makes sense when there's a Sonder Editor node upstream with a project open and Reference lanes staged on its timeline. It's not a generic "add a reference image" node. It's the cheap resolver that sits in front of the three Sonder Reference Bridges and tells you - and your workflow - what the current render window is actually allowed to see.

Why the reference system exists at all: character and location consistency across scenes, without retraining a LoRA every time you want a new person. You keep faces, outfits, props and places in the editor's Reference Library, drag members onto Reference lanes, and scope each lane over a range of frames. At generation time, only the items that are effective in the window you selected should reach the model - an item that mostly sits outside the selection shouldn't fire, and a lane with nothing effective shouldn't run an expensive decode branch. That's exactly what this node computes.

How it works

The Selector takes two inputs and does no heavy lifting. It resolves the lanes - works out which staged items are effective for the active window - without decoding a frame of media. Decoding is the slow part; deciding is nearly free. Then it hands its answer to the Bridges, which do the actual decoding.

The inputs that matter:

  • project - wire from the Sonder Editor node's project output. No editor, no project, nothing to resolve.
  • reference_lanes - a comma-separated, zero-based list of Reference lanes, defaulting to 0 (the first lane). You can type 0,2 to combine two lanes into one ordered set, or edit the list in the Selector's own panel. Missing lanes are skipped - they don't silently fall back to lane zero, which would be a quiet way to feed the wrong character.

One constraint worth knowing: lanes you co-select have to agree. A lane whose media kind, recipe, or effective prompt override differs from what you've already selected is disabled with a reason shown. Mixing an image lane and an audio lane into one reference set is a conflict, and conflicts raise a clear error rather than guessing.

The three outputs and the gate

  • reference_set - the resolved set, fanned out to whichever Bridges you need. This is the payload.
  • has_reference - 0 when no selected lane has an item effective for this window, 1 when any does. This is the whole point of the node.
  • reference_strength - the authored strength of the first effective lane in lane-order, or 0.0 when nothing applies.

Use has_reference to gate the branch that contains the Bridges, through a node like a Sonder Switch or any lazy router. When a scene has no character reference on it, has_reference is 0, the branch genuinely doesn't execute, and you save yourself a pointless decode-and-condition pass. When the reference is in window, everything downstream just runs. That's the pattern the README's example workflow uses, and it's the reason this node exists rather than you wiring lanes directly into a model.

Install and gotchas

Sonder Editor is a young pack (v0.3.x, first public release mid-2026), so updates come fast. Install it once and all four reference nodes come with it:

cd ComfyUI/custom_nodes
git clone https://github.com/SonderSaid/ComfyUI-Sonder-Editor.git
cd ComfyUI-Sonder-Editor
pip install -r requirements.txt

Then restart ComfyUI. ComfyUI-Manager has a Sonder Editor entry if the pack has hit the Registry, but it's young enough that cloning is the reliable route until that first publish lands. Where people get burned:

  • These nodes need a recent ComfyUI. The Selector and Bridges use ComfyUI's newer V3 node API, so on older builds they never register. If the nodes don't appear, update ComfyUI before blaming the pack.
  • No render window = no verdict. The Selector answers "what will this window use", which isn't a question until you've set an in/out selection on the timeline. Set one, or has_reference will stay 0.
  • No model downloads. This pack ships no weights and deliberately does not install torch (ComfyUI already has the build matched to your GPU - the README warns a bare pip install can clobber it). ffmpeg on your PATH is recommended for media decode.
  • It's GPLv3, which only matters if you plan to redistribute modified copies.

If you see 0 on has_reference and you expected a reference to fire, check the lane verdicts in the editor: the item may be superseded by a tighter item on the same lane, dropped below the reference threshold, or muted. The Selector is only reporting what the timeline already decided.

CategorySonder

Inputs (2)

NameTypeDefaultDescription
projectSONDER_PROJECTWire from the Sonder Editor project output.
reference_lanesSTRING0Comma-separated zero-based Reference lanes. Missing lanes are skipped and do not fall back to lane zero. Use the Selector panel to edit this list.

Outputs (3)

NameTypeDescription
reference_setSONDER_REFERENCE_SETResolved Reference set for the selected lanes. Fan out to the required Reference Bridges.
has_referenceINT0 when no selected lane has a staged item effective for this window, 1 when any does. Gate the branch containing the Bridge on this so it genuinely does not execute.
reference_strengthFLOATAuthored strength of the first effective selected lane in lane-index order, or 0.0 when none is effective.