Skip to content

v1.3.0 — JLC ControlNet Orchestrator (Base & Advanced)

Latest

Choose a tag to compare

@Damkohler Damkohler released this 17 Apr 17:32

This release introduces the JLC ControlNet Orchestrator (Base & Advanced), a new non-canonical execution model for multi-ControlNet workflows in ComfyUI.


🚀 JLC ControlNet Orchestrator

The Orchestrator replaces recursive ControlNet chaining (previous_controlnet) with a slot-based, non-recursive execution model:

sum(weight_i * ControlNet_i(x))

Each ControlNet is:

  • copied (.copy())
  • conditioned internally (hint image, strength, start/end timing)
  • evaluated independently against the same latent input

The node constructs fully conditioned ControlNet objects internally and injects them directly into the conditioning stream. Because of this, external ControlNet Apply nodes should not be used as they would reintroduce unhandled recursion and would break the workflow.

Outputs are combined via deterministic weighted fusion, and the sampler sees a single ControlNet object.


✅ Key Properties

  • No recursive chaining
  • Independent ControlNet execution (no shared state)
  • Deterministic behavior (order-invariant when alpha = 1)
  • Early bypass removes inactive slots before execution
  • Native fallback to standard ControlNet Apply semantics for single-ControlNet cases
  • Eliminates use of ControlNet Apply nodes via internal conditioning

⚙️ Advanced Variant

The Advanced version extends the Orchestrator with built-in ergonomics:

  • Integrated ControlNet loading via dropdowns
  • Persistent in-memory cache for model reuse
  • Optional SHARE_PREVIOUS slot reuse
  • Eliminates the need for external loader nodes

All execution remains fully isolated via .copy(), preserving correctness.


🧠 Execution Model

This is a non-canonical approach to ControlNet interaction.

Instead of:

A(B(C(x)))

The Orchestrator computes:

A(x) + B(x) + C(x)

This removes recursive traversal, stabilizes execution, and makes multi-ControlNet behavior easier to reason about.


🖼️ Example Workflows

Included in this release:

  • JLC ControlNet Orchestrator (Base)
  • JLC ControlNet Orchestrator (Advanced)

Workflows are available in /assets/workflows/ and can be loaded directly into ComfyUI.


🔧 Additional Updates

  • README updated with new Featured section and full documentation
  • Registry metadata expanded (description + keywords)
  • ControlNet Composition bug fixes and invariance improvements included

⚠️ Notes

This node is experimental in the sense that it is non-canonical and does not attempt to reproduce all edge-case behaviors of ComfyUI’s native ControlNet chaining.

However, it is stable, deterministic, and designed for advanced workflows requiring precise and interpretable multi-ControlNet control.


Feedback, experiments, and comparisons are very welcome.