Nodes/ComfyUI-Sonder-Editor/Sonder Prompt Relay Bridge
ComfyUI Node

Sonder Prompt Relay Bridge

Your timeline prompt lanes, handed to kijai's PromptRelay

By SonderSaid·Created about a month ago·Updated 12 days ago· 30
Sonder Prompt Relay Bridge
  • project
  • global_prompt
  • smart_prompt
  • local_prompts
  • segment_lengths

Sonder Prompt Relay Bridge is the adapter that connects Sonder Editor's timeline prompt lanes to kijai's ComfyUI-PromptRelay, the temporal-prompt system used by the Wan and LTX video families. Sonder lets you cut a prompt lane into sections along the timeline, each applying to its own range, so a single clip carries a whole beat instead of one prompt for its whole length. PromptRelay is how that per-range prompting actually reaches the model - and this node is what turns the editor's lane state into the payload strings PromptRelay expects.

It matters because this is the one genuinely fiddly handoff in the pack. Without the bridge you'd be hand-serializing prompt sections into PromptRelay's pipe-separated format, counting frames, and praying the tags line up. The bridge does all of it from the project state, window-rebased and sanitized.

How it works

Wire the project output from a Sonder Editor in. It reads the render window's prompt lanes - the scene-global lane plus the local sectioned lane - and emits four strings:

  • global_prompt - the always-on identity/style prompt, passed through untouched. If it's empty, PromptRelay's Smart node auto-promotes the first local segment (documented passthrough behavior).
  • smart_prompt - pipe-separated local prompts with [start-end] tags in real frame numbers. Wire this into Prompt Relay Encode (Smart)'s smart_prompt input.
  • local_prompts - the same prompts without tags, for the manual Prompt Relay Encode.
  • segment_lengths - comma-separated frame lengths, paired with local_prompts for the manual encoder.

The sanitization is worth knowing about because it explains weird-looking output: | characters in your prompt text become commas, newlines are flattened, and [n]/[n-m] numeric tags are stripped so PromptRelay's parsers can't misread them as structural markers. The README's honest caveat: PromptRelay conflicts with other attention patchers, and it reads frame counts from the sampled latent - the latent is the execution truth, not the bridge.

Install and wiring

Pack install (ComfyUI Manager search Sonder Editor, or git clone + pip install -r requirements.txt + restart) plus ComfyUI-PromptRelay installed separately - the bridge emits strings, it doesn't ship the encoder. You wire the bridge's outputs into PromptRelay's Encode nodes; no model patching happens inside the bridge.

Two things to keep straight. First, sections hold until the next section starts - a prompt lane cut is a "this region, then the next" model, not a per-frame one. Second, queued runs use the frozen job snapshot while live runs read the current scene, so if you change prompts in the editor while jobs are queued, expect the queued result to match what was queued, not what you just typed. It's the node that makes "one clip, one beat" actually work with PromptRelay - wire it once, then go back to just cutting prompt sections on the timeline.

CategorySonder

Inputs (1)

NameTypeDefaultDescription
projectSONDER_PROJECTWire from the Sonder Editor's project output so the bridge sees the same execution window.

Outputs (4)

NameTypeDescription
global_promptSTRINGScene-global prompt text (always-on identity/style). Passed through untouched. If empty, PromptRelay's Smart node auto-promotes the first local segment to global (and keeps it local) — documented passthrough.
smart_promptSTRINGPipe-separated local prompts with [start-end] tags in window-rebased REAL frame numbers (only spans matter to the parser, so real frames are proportionally exact and match the editor). Wire into Prompt Relay Encode (Smart) `smart_prompt`.
local_promptsSTRINGPipe-separated local prompt texts without tags. Wire into the manual Prompt Relay Encode `local_prompts` together with segment_lengths.
segment_lengthsSTRINGComma-separated pixel-frame segment lengths for the manual Prompt Relay Encode `segment_lengths`. Tail frame padding the editor adds for template constraints inherits the last segment's prompt.