Extensions/Doss Node Suite
ComfyUI Extension

Doss Node Suite

Custom ComfyUI nodes for practical image, LoRA, workflow timing, and LTX-2.5 motion-control workflows.

By JamesDanielDoss·Created 3 months ago·Updated 12 days ago· 1
JamesDanielDoss/Doss-Node-Suite
Nodes7
On cloudLocal install
Category⚡ Doss Node Suite, ⚡ Doss Node Suite/LTX-2.5
Stars1
Updated12 days ago
Readme

Doss Node Suite

Doss Node Suite is a public ComfyUI custom node pack focused on practical visual workflow tools.

GitHub: https://github.com/JamesDanielDoss/Doss-Node-Suite

Current shipped nodes:

  • Doss Label Maker: adds fully customizable, resizable free-floating text to the workflow without entering prompt execution.
  • Doss Image Comparer: compares two IMAGE inputs visually and passes IMAGE tensors through.
  • Doss Motion Settings | LTX 2.5: exposes curated prompt, timing, seed, motion, adherence, and FPS controls with derived frame math.
  • Doss Motion Studio | LTX 2.5: draws named motion paths over the upstream starting image before generation.
  • Doss Resolve Motion Tracks | LTX 2.5: validates and converts normalized paths into one LTX coordinate per frame for the official LTX motion path.
  • Doss Multi-LoRA Loader: adds, removes, enables, and weights an ordered stack of installed LoRAs inside one loader node.
  • Doss Save Image: saves IMAGE batches to the ComfyUI output folder or an output subfolder, displays saved image previews inside the node, and passes IMAGE tensors through.
  • Doss Workflow Timer and Alarm: displays a live workflow timer on the canvas and optionally plays a completion alarm.

Installation

Clone this repository into your ComfyUI custom nodes folder:

cd <ComfyUI installation>\custom_nodes
git clone https://github.com/JamesDanielDoss/Doss-Node-Suite.git ComfyUI-Doss-Node-Suite

Then restart ComfyUI.

Find the nodes by searching for Doss, or browse:

⚡ Doss Node Suite

The node pack loads through the top-level __init__.py and exports:

  • NODE_CLASS_MAPPINGS
  • NODE_DISPLAY_NAME_MAPPINGS
  • WEB_DIRECTORY

WEB_DIRECTORY points to ./js for Doss Canvas Label, the Doss Image Comparer, Doss Multi-LoRA Loader, LTX Motion Studio, LTX Motion Settings, Doss Save Image, and Workflow Timer frontend interfaces.

Nodes

Doss Label Maker

Category: ⚡ Doss Node Suite

Display name: Doss Label Maker

Purpose: Add fully formatted free-floating text to the workflow canvas. The frontend-only virtual node is saved in workflow JSON but has no sockets, does not execute, and consumes no generation resources. When deselected, only its text is drawn. A single click shows a temporary selection outline and bottom-right resize handle; clicking elsewhere removes them. Double-click anywhere inside the text area to open the full editor for content, more than 80 curated installed-font choices, custom fonts, color, opacity, style, weight, explicit condensed/expanded stretch, case, alignment, direction, line height, letter/word spacing, indentation, wrapping, underline, strikethrough, small caps, kerning, text outline, and shadow. Explicit checkboxes enable Outline, Shadow, and Shadow Blur; enabling one provides a visible starting value and unlocks its related controls. Large text is scaled to fit the editor preview and the canvas bounds expand as needed to prevent clipping. See docs/doss_canvas_label.md.

Doss Motion Node | LTX 2.5

Category: ⚡ Doss Node Suite/LTX-2.5

The divider makes the ownership boundary explicit: Doss supplies the control nodes, while LTX 2.5 and the Motion Track workflow are Lightricks technology. Motion Settings, Motion Studio, and Resolve Motion Tracks form one companion set for that official workflow. Motion Studio displays the upstream Load Image selection before a run, stores portable normalized paths, and blocks stale or invalid plans. The resolver creates one official-format coordinate per frame. See docs/doss_ltx_motion.md for the full interface and compatibility boundary.

Doss Image Comparer

Category: ⚡ Doss Node Suite

Display name: Doss Image Comparer

Purpose: Compare two ComfyUI IMAGE inputs visually while keeping the node chainable.

Input fields:

| Input | Type | Notes | | --- | --- | --- | | image_a | IMAGE | Required first image input. Displays on the left as A / Original. | | image_b | IMAGE | Optional second image input. Displays on the right as B / Result. | | comparer_mode | dropdown | Side By Side or Slider. |

Output fields:

| Output | Type | Notes | | --- | --- | --- | | image_a | IMAGE | Pass-through first comparison image. | | image_b | IMAGE | Pass-through second comparison image. Mirrors image_a if no second image is available. |

Behavior:

  • If image_b is connected, the node compares image_a and image_b.
  • If image_b is not connected and image_a has a batch of at least two images, the node compares the first two images from image_a.
  • If only one image is available, the node shows and returns image_a safely.
  • Side By Side displays image_a on the left and image_b on the right.
  • Slider displays image_a on the left side of the split and image_b on the right side.
  • Slider shows corner labels: A: Original at top-left and B: Result at top-right.
  • The comparer does not create a persistent floating center preview.

Doss Multi-LoRA Loader

Category: ⚡ Doss Node Suite

Display name: Doss Multi-LoRA Loader

Purpose: Apply multiple compatible LoRAs to one MODEL and CLIP pair without chaining separate loader nodes.

  • Click + Add LoRA to create a row.
  • Select an installed LoRA, set its separate MODEL and CLIP weights, and use the checkbox to enable or visibly subdue/bypass it.
  • Remove rows with × and reload the installed inventory with Refresh.
  • Rows execute from top to bottom and persist in the workflow JSON.
  • Invalid JSON, missing files, unsupported stack versions, and incompatible LoRAs fail instead of silently substituting another file.

See docs/doss_multi_lora_loader.md.

Doss Save Image

Category: ⚡ Doss Node Suite

Display name: Doss Save Image

Purpose: Save images to the normal ComfyUI output folder or an output subfolder, show saved image previews inside the node, and pass the original IMAGE batch through unchanged.

Wire connections:

| Direction | Name | Type | | --- | --- | --- | | Input | image | IMAGE | | Output | image | IMAGE |

Visible UI:

  • filename, save_location, file_format, save_metadata, and save_metadata_text_file widgets.
  • Browse button for choosing output-relative folders.
  • Saved image previews below the widgets/parameters after execution, using ComfyUI's standard image preview payload.

Stored settings:

| Widget | Type | Notes | | --- | --- | --- | | filename | STRING | Default ComfyUI. Invalid Windows filename characters are replaced with _. | | save_location | STRING | Default output, which means the normal ComfyUI output folder. Subfolders are output-relative, such as Doss Test or portraits/session_01. | | file_format | dropdown | JPEG, PNG, PDF, WEBP, TIFF, ICO, or BMP. | | save_metadata | boolean | Attempts to embed available metadata when the selected format supports it. | | save_metadata_text_file | boolean | Writes a .txt sidecar tied to the full saved image filename, such as ComfyUI.png.txt, with available generation metadata and save details. |

Behavior:

  • The Browse button only browses folders inside the normal ComfyUI output directory.
  • output, output/, and an empty value all resolve to the base ComfyUI output folder.
  • Absolute paths, drive letters, .. traversal, and paths outside output are rejected.
  • Existing files are not overwritten; names auto-increment like ComfyUI.png, ComfyUI(1).png, ComfyUI(2).png.
  • Batches save every image using the same settings.
  • Batches display every saved image in the node preview list after execution.
  • JPEG and PDF flatten transparency onto white.
  • PNG and WEBP preserve transparency when possible.
  • ICO saves one 256x256 .ico file per batch image.
  • PDF and ICO files are returned in the standard preview payload, but ComfyUI/browser image preview support for those formats may be limited.
  • No quality or compression sliders are exposed.

Doss Workflow Timer and Alarm

Category: ⚡ Doss Node Suite

Display name: Doss Workflow Timer and Alarm

Purpose: Display a live workflow timer directly on the ComfyUI canvas and optionally play a generated completion alarm.

Wire connections:

None. This is a visual utility/display node only.

Widgets:

| Widget | Type | Notes | | --- | --- | --- | | timer_label | STRING | Default Workflow Timer. | | show_timer_label | boolean | Shows or hides the small title/label text on the timer card. | | show_status | boolean | Shows Ready, Running, Complete, Error, or Canceled. | | show_milliseconds | boolean | Adds milliseconds to the timer display. | | hide_node_ui | boolean | Internal persisted setting for user-facing Display-only mode. | | font_size | integer | Timer value size, range 12 to 96. | | font_color | STRING | Default #ffffff; edited with preset swatches including transparent. | | background_color | STRING | Default #111111; edited with preset swatches including transparent. | | background_opacity | float | Default 0.85, range 0.0 to 1.0. | | border_color | STRING | Default #3b82f6; edited with preset swatches including transparent. | | border_radius | integer | Default 8, range 0 to 32. | | alarm_enabled | boolean | Plays a completion sound after successful workflow completion. | | alarm_sound | dropdown | Ping or Beep. | | alarm_volume | integer | Default 70, range 0 to 100. |

Behavior:

  • Starts on ComfyUI execution_start.
  • Updates live while the workflow is running.
  • Stops on ComfyUI execution_success and shows the final elapsed time.
  • Shows Error or Canceled when ComfyUI emits those states.
  • Does not treat executing with a null node as workflow completion.
  • Transparent background skips the card fill, and transparent border skips the border stroke.
  • Show title/label controls whether the small timer label text is drawn; the main timer remains visible.
  • Display-only mode tightens the node size, hides the title text/button, minimizes the normal node shell, allows dragging from the timer card, and keeps double-click customization available.
  • Uses generated browser audio only; no external audio files are required.
  • Does not play audio if the alarm is disabled or volume is 0.

Example Workflow

A minimal placement/test example is included at:

examples/doss_image_comparer_example.json
examples/doss_save_image_example.json

This example is only for placing and testing the node. It is not a production workflow pack.

Validation

Run the unit tests from the repository root:

python -m unittest discover -s tests
python -m pytest

Manual ComfyUI validation:

  1. Install the repo into ComfyUI/custom_nodes/ComfyUI-Doss-Node-Suite.
  2. Restart ComfyUI and confirm no import errors appear in the console.
  3. Search for Doss Image Comparer.
  4. Connect two IMAGE outputs to image_a and image_b.
  5. Queue the prompt and confirm the node displays Side By Side inside the node.
  6. Switch to Slider and confirm the slider stays inside the node.
  7. Confirm no Click mode appears and no selected_image output exists.
  8. Confirm no console errors prevent ComfyUI from loading.
  9. Search for Doss Save Image.
  10. Confirm only image input and image output wire connections exist.
  11. Click Browse and confirm only ComfyUI output folders can be selected.
  12. Save a PNG batch and confirm auto-incremented filenames.
  13. Confirm saved image previews display inside Doss Save Image below the widgets/parameters.
  14. Confirm downstream nodes still receive the original IMAGE through the image output.
  15. Try invalid filename characters and confirm this warning appears: Bad filename due to special characters. Characters have been changed to underscores "_".
  16. Search for Doss Workflow Timer and Alarm.
  17. Confirm it has no input or output wire connections.
  18. Confirm the node shows a large clean timer display and a Customize button.
  19. Confirm Customize opens a modal with color swatches instead of browser color picker inputs.
  20. Confirm double-clicking the timer card opens Customize.
  21. Confirm transparent background and transparent border work.
  22. Confirm Display-only mode hides the button, minimizes the normal node chrome, and double-click still opens Customize.
  23. Queue a workflow and confirm the timer changes Ready -> Running -> Complete only after the workflow is truly complete.
  24. Confirm the completion alarm plays only when enabled and volume is above 0.

License

MIT. See LICENSE.