Sonder Driver Selector
'is there a driver this run?' without decoding a frame
- project
- driver_ref
- has_driver
Sonder Driver Selector is the "peek before you commit" half of the driver system in Sonder Editor. In a Sonder project, a Driver lane is how you make the generation follow an external motion source - an OpenPose video, a face track, anything that drives the output frame for frame. That's the IC-LoRA motion-transfer technique the pack demos in its launch material: put a pose clip on a Driver lane, and the generation stays in lockstep with it.
The Selector's job is deceptively small and genuinely important: it resolves which Driver lane is active for the current render window without decoding any media. It hands you two things - a reference to the driver, and a has_driver flag you can use to route the graph. Decoding is expensive and pointless if there's no driver on the selected range, so this node answers "is there a driver, and which one?" for almost nothing.
How it works
Wire the project output from a Sonder Editor in. The optional driver_lane_index picks which Driver lane you mean (zero-based, default 0), and driver_selector_overrides_json is a workflow-local override for the editor's driver state - leave it as {} until you actually need to force things from the graph side. Missing lanes are treated as "no driver," which is the graceful default.
Outputs:
driver_ref- a resolved reference to the lane. This is not frames; it's a lightweight handle you pass to Sonder Driver Bridge, which does the actual decoding.has_driver- 1 if the selected lane contributes media to the render window, 0 if not. This is the lazy-routing signal: wire it into a Sonder Switch or Cluster'sselectand the graph can choose the driver branch or the no-driver branch automatically.
Install and wiring
Part of the Sonder pack - ComfyUI Manager search Sonder Editor, or git clone https://github.com/SonderSaid/ComfyUI-Sonder-Editor.git into custom_nodes, pip install -r requirements.txt, restart. It's a classic (V1-style) node, so it loads everywhere the pack does.
The pattern the README wants you to use: put the Selector outside the driver branch, use has_driver to drive the Switch/Cluster, and pass driver_ref into Sonder Driver Bridge inside the active branch. If has_driver is 0, the Bridge still runs but emits a black fallback and strength 0 - so the whole driver subsystem degrades gracefully when a scene simply has no driver. That's the design to appreciate: one clean branch point, decided for free, no frames decoded until you're sure you need them.
The thing people sometimes expect that isn't here: this node doesn't give you images. If you're looking for the actual driver frames, you're one hop further - that's Sonder Driver Bridge's job. The Selector is the scout; the Bridge is the transport.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| project | SONDER_PROJECT | Wire from the Sonder Editor project output. | |
| driver_lane_indexopt | INT | 00–999 | Zero-based Driver lane order. Missing lanes are treated as no driver. |
| driver_selector_overrides_jsonopt | STRING | {} | Workflow-local Driver selector override state. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| driver_ref | SONDER_DRIVER_REF | Resolved Driver reference for the selected lane. Wire to Sonder Driver Bridge. |
| has_driver | INT | 0 when no effective driver is present, 1 when the selected lane contributes media. |