Extensions/jlc-comfyui-nodes
ComfyUI Extension

jlc-comfyui-nodes

Custom workflow-oriented nodes for ComfyUI

By Damkohler·Created 6 months ago·Updated 2 days ago· 23
Damkohler/jlc-comfyui-nodes
Nodes23
On cloudLocal install
Categoryconditioning/controlnet, loaders
Stars23
Updated2 days ago

Nodes (23)

 JLC ControlNet Apply

Pass the object, keep the chain

conditioning/controlnet
 JLC ControlNet Apply (Advanced)

A ControlNet Apply that loads its own model and chains cleanly

conditioning/controlnet
 JLC ControlNet Composition

Stack five ControlNets without the recursive slowdown

conditioning/controlnet
 JLC ControlNet Orchestrator

Every ControlNet in one node, no Apply-chain spaghetti

conditioning/controlnet
 JLC ControlNet Orchestrator (Advanced)

Multi-ControlNet without the chain

conditioning/controlnet
 JLC Dynamic Aux Preprocessor Wrapper

One image in, ten ControlNet hints out

conditioning/controlnet
 JLC LoRA Loader - Multi-Model / CLIP + Block Weight

One LoRA on the hair layers, another on the rest — per-slot block weights

loaders
 JLC LoRA Loader - Multi-Model / Block Weight

Per-LoRA block weights, no CLIP to babysit

loaders
 JLC LoRA Loader - Multi-Model / CLIP

Stack ten LoRAs in one node and actually see what you're doing

loaders
 JLC LoRA Loader - Multi Model

Ten LoRAs on one node — and it won't touch your CLIP

loaders
 JLC LoRA Loader - Multi Model / Shared Block Weight + CLIP

One block-weight profile for your whole LoRA stack, CLIP included

loaders
 JLC LoRA Loader - Multi-Model / Shared Block Weight

Ten LoRAs, one block profile, no CLIP patching

loaders
 JLC Multi Get

Grab any value from across your workflow without drawing a single wire

utils
 JLC Multi Set

Publish any value to a named channel and never route it by hand again

utils
 JLC Load, Resize & Encode Image

The image loader that ends 'latent size mismatch' errors

utils/image
 JLC 2-LoRA Loader - Block Weight [Legacy]

Keep it for old workflows only

loaders
 JLC - LoRA Loader Stack (10) [Legacy]

This LoRA Stack Is Retired — But It's Why Your Old Workflows Still Open

loaders
 JLC Padded Image

The Inpaint/Outpaint Canvas Builder People Actually Share

image
 JLC Padded Latent

Outpaint without the tape measure

conditioning/inpaint
 JLC Resize Image

A Resize Node That Doesn't Break Dynamic Workflows

utils/image
 JLC Resize Multiple Images

One resize policy, five images, zero math on your part

utils/image
 JLC Seed Generator

The Seed Node That Stops Your Base Seed From Walking Away

utils/seed
 JLC Stage Boundary VRAM Cleanup

A Deliberate 'Free the VRAM Between Stages' Switch — Handle With Care

utils/VRAM
Readme

JLC ComfyUI Nodes

<p align="center"> <img src="assets/icons/jlc-comfyui-nodes_Logo-0512.png" width="120"> &nbsp;&nbsp;&nbsp; <img src="assets/icons/jlc-comfyui-nodes_Logo-Dark-0512.png" width="120"> </p> <p align="center"> <a href="https://registry.comfy.org/packages/jlc-comfyui-nodes"> <img src="https://img.shields.io/badge/Available%20on-ComfyUI%20Registry-blue" alt="ComfyUI Registry"> </a> <img src="https://img.shields.io/badge/ComfyUI-Custom%20Nodes-blue" alt="ComfyUI Custom Nodes"> <img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"> <img src="https://img.shields.io/badge/status-active-brightgreen" alt="Status: active"> </p>

JLC ComfyUI Nodes is a custom-node collection built around Non-Recursive ControlNet Composition, a method introduced by this project to replace recursively nested multi-ControlNet evaluation with a flattened composition path whose execution cost scales approximately linearly with the number of applied ControlNets, rather than accumulating the severe repeated work, runtime growth, and memory pressure of native recursive chains.

The collection also includes supporting tools for padded inpainting and outpainting, dynamic ControlNet auxiliary preprocessing, dynamic LoRA loading, stage-boundary VRAM cleanup, multi-image resizing, compact wireless connections, and frontend workflow control.

Release 2.1.0 expands the utility family with JLC Resize Multiple Images, the production-ready JLC Dynamic Multi Set/Get pair, and JLC Boolean Logic (Frontend), which replaces the earlier dedicated AND prototype.

Developed by J. L. Córdova, the project is especially focused on Flux-oriented image-generation pipelines, ControlNet-heavy workflows, multi-stage inference, LoRA experimentation, and advanced inpainting and outpainting.

The current ControlNet Composition, Orchestrator, Orchestrator Advanced, Apply Advanced, shared composition core, and dynamic slot-visibility paths were audited and validated against ComfyUI commit 2a610155 from June 22, 2026, with frontend package 1.45.19. Validation included demanding Flux workflows with multiple LoRAs, Union ControlNet models, repeated ControlNet use, and as many as four ControlNet slots. See the detailed ControlNet guide for the full compatibility baseline, benchmark context, and runtime recommendations.


Start Here: Release 2.0 Showcase Workflows

These showcase workflows demonstrate the breadth of the node pack and provide practical starting points for exploring Release 2.0.

The JLC ControlNet Orchestrator (Advanced) workflow serves both as an approachable starting point for new users and as a reference implementation of the package’s non-recursive ControlNet composition system.

JLC Orchestrator Advanced Workflow

Download PNG workflow · Download JSON workflow

The JLC All-In-One Workflow presents the collection as a complete working toolchain rather than a set of isolated nodes. It combines ControlNet with representative nodes from the ControlNet Aux, Dynamic LoRA Loader, padded-image and padded-latent, and utility families.

JLC All-In-One Workflow

Download PNG workflow · Download JSON workflow

As with the other workflows included in this documentation, each example is provided both as a PNG with an embedded workflow for direct drag-and-drop into ComfyUI and as a JSON file for standard workflow loading.


Documentation

This README is the front page for the repository. Detailed documentation is organized by node family:

  1. ControlNet Composition and Orchestration
  2. Padded Image / Padded Latent
  3. ControlNet Aux Preprocessor Wrappers
  4. Dynamic LoRA Loaders
  5. Utility Nodes

Node Families

1. ControlNet Composition and Orchestration

A family of nodes for native ControlNet application, modular chain construction, and explicit linearized non-recursive weighted fusion.

This family includes:

  • JLC ControlNet Composition
  • JLC ControlNet Orchestrator
  • JLC ControlNet Orchestrator (Advanced)
  • JLC ControlNet Apply
  • JLC ControlNet Apply (Advanced)

The central design treats prepared ControlNets as independent operators evaluated against the same sampler state and combines their outputs through explicit weighted addition. The modular Apply Advanced → Composition workflow and the integrated Orchestrator Advanced workflow use the same validated fusion core.

  • Orchestrator Advanced is the recommended integrated interface for most new multi-ControlNet workflows.
  • Apply Advanced → Composition is a first-class modular interface when explicit chaining, pass-through wiring, or separate model sourcing is useful.
  • Orchestrator remains the specialized external-input interface for ControlNet objects supplied by standard, third-party, custom, or nonstandard-location loaders.

Read the ControlNet guide


2. Padded Image / Padded Latent

Nodes for padded-canvas workflows, especially inpainting and outpainting.

This family includes:

  • JLC Padded Image
  • JLC Inpaint-Conditioned Padded Latent

Use Padded Image when you want image, mask, and canvas preparation while keeping VAE encoding and inpaint conditioning separate. Use Padded Latent when you want a more integrated node that prepares the padded canvas and also injects inpaint-conditioning metadata.

Read the Padded Image / Padded Latent guide


3. ControlNet Aux Preprocessor Wrappers

A dynamic convenience wrapper for simple image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package.

This family currently includes:

  • JLC Dynamic Aux Preprocessor Wrapper

The wrapper does not replace Fannovel16's nodes and does not claim ownership of the underlying preprocessors. It provides a compact multi-slot interface for JLC workflows that need several simple ControlNet hint images from the same source image. Parameter-heavy preprocessors should still be used through their native ControlNet Aux nodes.

comfyui_controlnet_aux must be installed for non-disabled preprocessor slots to run.

Read the ControlNet Aux guide


4. Dynamic LoRA Loaders

Dynamic LoRA loader nodes for MODEL-only and MODEL+CLIP workflows, including shared and per-slot block-weight variants.

This family includes:

  • JLC LoRA Loader - Multi Model
  • JLC LoRA Loader - Multi-Model / CLIP
  • JLC LoRA Loader - Multi-Model / Shared Block Weight
  • JLC LoRA Loader - Multi Model / Shared Block Weight + CLIP
  • JLC LoRA Loader - Multi-Model / Block Weight
  • JLC LoRA Loader - Multi-Model / CLIP + Block Weight

These nodes predeclare up to ten LoRA slots and use frontend visibility controls to expose only the active rows. Hidden slot values remain serialized in workflow JSON, while the backend treats slot_count as authoritative. MODEL-only variants intentionally avoid CLIP/text-encoder patching; MODEL+CLIP variants expose independent MODEL and CLIP strengths.

Read the LoRA Loader guide


5. Utility Nodes

Workflow-support nodes for seed discipline, stage-boundary memory hygiene, image resizing, compact wireless connections, and frontend Switchboard control.

This family includes:

  • JLC Seed Generator — shared seed source that keeps the visible base seed stable while a frontend display reports the last seed actually used.
  • JLC Stage Boundary VRAM Cleanup — experimental latent-passthrough cleanup helper for advanced multi-stage workflows where selected heavy model objects should be unloaded before the next stage.
  • JLC Resize Multiple Images — applies one shared aspect-ratio-preserving resize policy to one through five images, with separate outputs and a convenience normalized batch output.
  • JLC Dynamic Multi Set and JLC Dynamic Multi Get — production-ready virtual nodes that replace groups of individual wireless Set/Get nodes with up to sixteen independently named, dynamically typed channels.
  • JLC Boolean Logic (Frontend) — pure client-side two-input logic for ComfyUI-Switchboard controllers, supporting AND, OR, XOR, NAND, NOR, XNOR, and the two directional AND-NOT operations. It is a Switchboard companion, not a standalone backend Boolean node.

Read the Utility Nodes guide


Installation

Install through the ComfyUI Registry:

https://registry.comfy.org/packages/jlc-comfyui-nodes

Manual install:

cd ComfyUI/custom_nodes
git clone https://github.com/Damkohler/jlc-comfyui-nodes.git

Restart ComfyUI after installation or update.

To update manually:

cd ComfyUI/custom_nodes/jlc-comfyui-nodes
git pull

Optional dependency: ControlNet Aux preprocessors

The JLC Dynamic Aux Preprocessor Wrapper requires Fannovel16's comfyui_controlnet_aux package when any non-disabled preprocessor slot is used.

Install it through ComfyUI Manager, or follow the upstream installation instructions:

https://github.com/Fannovel16/comfyui_controlnet_aux

Some upstream preprocessors may download or load large auxiliary models the first time they are used.


Compatibility Notes

The nodes are designed for ComfyUI custom-node workflows and have been developed primarily around:

  • Flux-based image generation
  • ControlNet-heavy pipelines
  • LoRA experimentation
  • inpainting and outpainting
  • multi-stage inference graphs

The current ControlNet family is aligned with the ComfyUI sampler, ControlNet, model-management, hook, and lifecycle interfaces present at the tested baseline documented in the ControlNet guide. Later ComfyUI revisions may require renewed testing if those interfaces change.

For the validated 16 GB RTX 4090 Laptop workflow, use normal ComfyUI VRAM behavior with DynamicVRAM where desired. Forced --lowvram is not recommended for the benchmarked Flux and multi-ControlNet configurations because it caused destructive partial unload/reload cycles and severe execution-time regression.

Real MultiGPU ControlNet cloning is not implemented by the JLC composed wrapper. The compatibility attributes present in the wrapper are single-device shunts, not a claim of MultiGPU support.


Repository Structure

The current repository includes these main areas:

nodes/
  controlnet_aux_nodes/
  engines/
  lora_loader_nodes/
  util_nodes/
web/
assets/
  icons/
  workflows/
docs/

A generated repository map is also included:

jlc-comfyui-nodes-structure.txt

License

MIT License.


Author

J. L. Córdova
GitHub: Damkohler


Contributions

Suggestions, bug reports, and improvements are welcome through GitHub issues or pull requests.