ComfyUI illumorae
focused on variation exploration with loading and saving within a project structure . load random files by string , multiply or randomize lora string strength , load and save to an external folderpath with filename safe outputs . load random checkpoint or load checkpoint from string matching . work in progress.
Nodes (35)
Load a checkpoint by typing half its name
Rotate checkpoints on a timer, on purpose
Canny, LineArt and LeReS Depth With an On-Disk Cache
How Long Is Your Prompt, Really? A Token Counter That Puts the Number on the Node
Finally see what's actually nested in your prompt
Pull detail out of flat, muddy images
Crop to an aspect ratio without decapitating the subject
The cheapest content fill in the pack
Infill that extends the wall, road, and horizon
Texture inpainting for people who miss the math
The object-removal fill you'll actually reach for
The Flux Kontext resolution ladder, with a stretch option
One node to prep images for WAN video
Resize that respects your pipeline's math
MSRCR for the murky, backlit, low-light mess
Load a random camera-angle variant, not a random image
Load an image by raw path, with the metadata for free
Your prompt library, with a randomizer on it
Read a prompt file without the red crash bubble
Randomize LoRA strength inside the prompt string
Scale every LoRA in your prompt in one move
See your LoRA strengths as a picture, not a wall of numbers
Procedural patterns without a model download — the ComfyUI trick for guided shapes
Save an animated WebP anywhere you want, not just into ComfyUI's output folder
Save PNGs into your own project folders, with counters and metadata intact
Let a folder's own contents decide what to generate next
A prompt editor that finally shows you where the LoRA tags are
Same words, shuffled order — the cheap way to explore prompt variation
A readable text display that survives reloads and broken inputs
Scale every prompt weight at once — without touching the LoRA tags
Turn a prompt into a filename before your save node mangles it
Cut text down to size without slicing a word or a bracket in half
Drop a Wan 2.2 I2V LoRA on your high-noise pass without touching a dropdown
The low-noise leg of Wan 2.2 I2V LoRA loading — where detail and speed live
One text string, both Wan 2.2 passes — the loader that pairs HIGH and LOW LoRAs
ComfyUI illumorae
comfyUI custom nodes focused on randomization and image variant exploration
- loading files by partial string match , randomizing lora string strength , text reordering
- load and save with external folderpath and filename outputs for project structures
- each node is self-contained and could be installed separately if prefer specific nodes
<a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/CheckpointLoaderByStringDirty.html"><img src="docs/comfyui_illumorae_load_checkpoint_text_file_basic.png" width="800" caption="workflow"/></a>
install
- install thru the ComfyUI Manager search for "illumorae" or manually download as a zip and extract as folder into the ComfyUI
custom_nodesdirectory - OPTIONAL may install nodes individually by copying a nodes subfolder into the ComfyUI
custom_nodesdirectory , each has been setup to function independently
nodes
<table> <tr> <td><a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillBoundaryPropagate.html"><img src="docs/comfyui_illumorae_image_infill_multiple.png" width="400" /></a></td> <td><a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageMultiScaleRetinexColorRestoration.html"><img src="docs/comfyui_illumorae_image_retinex_enhancement_msrcr.png" width="400" /></a></td> </tr> <tr> <td><a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoadImageRandomVariants.html"><img src="docs/comfyui_illumorae_image_load_variant_contrast_save.png" width="400" /></a></td> <td><a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/GenProceduralPatterns.html"><img src="docs/comfyui_illumorae_procedural_patterns.png" width="400" /></a></td> </tr> </table> <table style="border-collapse: collapse; width: 100%;"> <tbody style="line-height: 1.1;"> <!-- Image --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">Image</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#image-infill-boundary-propagate">Image Infill Boundary Propagate</a></td> <td style="padding: 1px 6px;"><a href="#image-infill-exemplar-region-fill">Image Infill Exemplar Region Fill</a></td> <td style="padding: 1px 6px;"><a href="#image-infill-gaussian-mixture-layer">Image Infill Gaussian Mixture Layer</a></td> <td style="padding: 1px 6px;"><a href="#image-infill-patchmatch">Image Infill PatchMatch</a></td> </tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#image-clahe">Image CLAHE</a></td> <td style="padding: 1px 6px;"><a href="#image-multi-scale-retinex-color-restoration">Image Multi-Scale Retinex Color Restoration</a></td> <td style="padding: 1px 6px;"><a href="#image-face-aspect-crop">Image Face Aspect Crop</a></td> <td style="padding: 1px 6px;"><a href="#video-resize-matte">Video Resize Matte</a></td> </tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#image-resize-flux-kontext-options">Flux Kontext Image Scale Options</a></td> <td style="padding: 1px 6px;"><a href="#procedural-patterns">Procedural Patterns</a></td> <td style="padding: 1px 6px;"></td> <td style="padding: 1px 6px;"></td> </tr> <!-- LoRA --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">LoRA</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#lora-text-strength-variants">LoRA Text Strength Variants</a></td> <td style="padding: 1px 6px;"><a href="#lora-text-strength-multiplier">LoRA Text Strength Multiplier</a></td> <td style="padding: 1px 6px;"><a href="#lora-text-visualizer">LoRA Text Visualizer</a></td> <td style="padding: 1px 6px;"></td> </tr> <!-- Text --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">Text</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#text-to-string-safe-for-filename">Text To Filename Safe Text</a></td> <td style="padding: 1px 6px;"><a href="#text-token-count">Text Token Count</a></td> <td style="padding: 1px 6px;"><a href="#text-strength-multiplier">Text Strength Multiplier</a></td> <td style="padding: 1px 6px;"><a href="#text-enclosure-visualizer">Text Enclosure Visualizer</a></td> </tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#text-reorder">Text Reorder</a></td> <td style="padding: 1px 6px;"><a href="#text-multiline-findcolorized">Text Multiline FindColorized</a></td> <td style="padding: 1px 6px;"></td> <td style="padding: 1px 6px;"></td> </tr> <!-- Load --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">Load</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#load-image-filepath-out">Load Image FilePath Out</a></td> <td style="padding: 1px 6px;"><a href="#load-image-random-variants">Load Image Random Variants</a></td> <td style="padding: 1px 6px;"><a href="#load-text-file-graceful">Load Text File Graceful</a></td> <td style="padding: 1px 6px;"><a href="#select-item-by-amount-generated">Select ITEM by Amount Generated</a></td> </tr> <!-- Checkpoint --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">Checkpoint</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#checkpoint-loader-by-string-dirty">Checkpoint Loader By String Dirty</a></td> <td style="padding: 1px 6px;"><a href="#checkpoint-random-selector">Checkpoint Random Selector</a></td> <td style="padding: 1px 6px;"></td> <td style="padding: 1px 6px;"></td> </tr> <!-- Save --> <tr><th colspan="4" align="left" style="padding: 2px 6px; background: #1f2430; color: #c8d3ff;">Save</th></tr> <tr style="vertical-align: top;"> <td style="padding: 1px 6px;"><a href="#save-image-extended-folderpath">Save Image Extended FolderPath</a></td> <td style="padding: 1px 6px;"><a href="#save-animated-webp-extended-folderpath">Save Animated WebP Extended FolderPath</a></td> <td style="padding: 1px 6px;"></td> <td style="padding: 1px 6px;"></td> </tr> </tbody> </table>Image Infill
<a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillBoundaryPropagate.html"><img src="docs/comfyui_illumorae_image_infill_multiple.png" height="200" /></a>
<table style="border-collapse: collapse; width: 100%;"> <tbody> <tr style="vertical-align: top;"> <td style="padding: 4px 8px; width: 50%;"> <a id="image-infill-boundary-propagate"></a><strong><a href="./ComfyUI_illumorae_ImageInfillBoundaryPropagate/image_infill_boundary_propagate.py">Image Infill Boundary Propagate</a></strong><br/> Fills the target region by propagating colors inward from the target boundary using a random-weighted onion-peel rule.<br/> <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillBoundaryPropagate.html"><img src="docs/comfyui_illumorae_image_infill_boundary.png" height="200" /></a> </td> <td style="padding: 4px 8px; width: 50%;"> <a id="image-infill-exemplar-region-fill"></a><strong><a href="./ComfyUI_illumorae_ImageInfillExemplarRegionFill/image_infill_exemplar_regionfill.py">Image Infill Exemplar Region Fill</a></strong><br/> Exemplar-based region filling with isophote-driven priority (Criminisi-style), extends linear structures into the target region.<br/> <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillExemplarRegionFill.html"><img src="docs/comfyui_illumorae_image_infill_exemplar.png" height="200" /></a> </td> </tr> <tr style="vertical-align: top;"> <td style="padding: 4px 8px; width: 50%;"> <a id="image-infill-gaussian-mixture-layer"></a><strong><a href="./ComfyUI_illumorae_ImageInfillGaussianMixtureLayer/image_infill_gaussian_mixture_layer.py">Image Infill Gaussian Mixture Layer</a></strong><br/> Single stationary-Gaussian-field texture inpainting by FFT-based conditional simulation (Galerne-Leclaire 2017).<br/> <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillGaussianMixtureLayer.html"><img src="docs/comfyui_illumorae_image_infill_gaussian.png" height="200" /></a> </td> <td style="padding: 4px 8px; width: 50%;"> <a id="image-infill-patchmatch"></a><strong><a href="./ComfyUI_illumorae_ImageInfillPatchMatch/image_infill_patchmatch.py">Image Infill PatchMatch</a></strong><br/> PatchMatch-based image infill.<br/> <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageInfillPatchMatch.html"><img src="docs/comfyui_illumorae_image_infill_patchmatch.png" height="200" /></a> </td> </tr> </tbody> </table>Image Adjustment
-
<a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoadImageRandomVariants.html"><img src="docs/comfyui_illumorae_image_load_variant_contrast_save.png" height="200" /></a>
-
<a id="image-clahe"></a>Image CLAHE (Contrast Limited Adaptive Histogram Equalization)
Enhances local image contrast using CLAHE. -
<a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageContrastLimitedAdaptiveHistogramEqualization.html"><img src="docs/comfyui_illumorae_image_clahe.png" height="200" /></a>
-
<a id="image-multi-scale-retinex-color-restoration"></a>Image Multi-Scale Retinex Color Restoration
Applies Multi-Scale Retinex with Color Restoration for dynamic range and color enhancement. -
<a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageMultiScaleRetinexColorRestoration.html"><img src="docs/comfyui_illumorae_image_retinex_enhancement_msrcr.png" height="200" /></a>
Image Resize + Crop
- <a id="image-face-aspect-crop"></a>Image Face Aspect Crop
Crops an image to a target aspect ratio with face-detection-biased anchoring and debug overlay output. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/ImageFaceAspectCrop.html"><img src="docs/comfyui_illumorae_image_face_aspect_crop.png" height="200" /></a>
- <a id="video-resize-matte"></a>Video Resize Matte
Resizes video frames with matte options for compositing. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/VideoResizeMatte.html"><img src="docs/comfyui_illumorae_image_resize_video_matte.png" height="200" /></a>
- <a id="image-resize-flux-kontext-options"></a>Image Resize Flux Kontext Options
Resizes images for optimal Flux Kontext input, with cropping/stretching options.
Image
- <a id="procedural-patterns"></a>Procedural Patterns
Generates procedural symmetrical patterns (torus rings, radial beams, spiral rings, combined) for visual influence in image generation. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/GenProceduralPatterns.html"><img src="docs/comfyui_illumorae_procedural_patterns.png" height="200" /></a>
LoRA
- <a id="lora-text-strength-variants"></a>LoRA Text Strength Variants
Parses LoRA strings and randomizes or highlights strengths within specified limits. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoraTextStrengthVariants.html"><img src="docs/comfyui_illumorae_lora_strength_randomize.png" height="200" /></a>
- <a id="lora-text-strength-multiplier"></a>LoRA Text Strength Multiplier
Multiplies and caps LoRA strengths, with options for total and individual caps. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoraTextStrengthMultiplier.html"><img src="docs/comfyui_illumorae_lora_strength_multiplier.png" height="200" /></a>
- <a id="lora-text-visualizer"></a>LoRA Text Visualizer
Visualizes LoRA strengths in prompt text as a word plot image. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoraTextVisualizer.html"><img src="docs/comfyui_illumorae_lora_strength_wordplot.png" height="200" /></a>
Text & Prompt Utilities
- <a id="text-to-string-safe-for-filename"></a>Text To String Safe For Filename
Converts text into a filename-safe string. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextToStringSafeForFilename.html"><img src="docs/comfyui_illumorae_text_to_string_filename_safe.png" height="200" /></a>
- <a id="text-token-count"></a>Text Token Count
Counts tokens in a string using clip - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextTokenCount.html"><img src="docs/comfyui_illumorae_text_token_count.png" height="200" /></a>
- <a id="text-strength-multiplier"></a>Text Strength Multiplier
Multiplies the strength of text prompt components. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextStrengthMultiplier.html"><img src="docs/comfyui_illumorae_text_strength_multiplier.png" height="200" /></a>
- <a id="text-enclosure-visualizer"></a>Text Enclosure Visualizer
Visualizes enclosed text , nested separation , and warnings on open ended enclosures - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextEnclosureVisualizer.html"><img src="docs/comfyui_illumorae_text_enclosure_visualize.png" height="200" /></a>
- <a id="text-reorder"></a>Text Reorder
Reorders prompt text using different scales of rules. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextReorder.html"><img src="docs/comfyui_illumorae_text_reorder.png" height="200" /></a>
- <a id="text-multiline-findcolorized"></a>Text Multiline FindColorized
Editable multiline text input with search/find highlighting and syntax-colored LoRA bracket tags. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/TextMultilineFindColorized.html"><img src="docs/comfyui_illumorae_text_multiline_findcolorized.png" height="200" /></a>
Load
- <a id="load-image-filepath-out"></a>Load Image FilePath Out
Loads an image from a file path and outputs the image, mask, file name, and folder path. - <a id="load-image-random-variants"></a>Load Image Random Variants
Loads a random variant of an image from a folder, with suffix options. - <a id="load-text-file-graceful"></a>Load Text File Graceful
Loads text from a file, gracefully handling missing/invalid files. - <a href="https://corvaeoboro.github.io/ComfyUI_illumorae/nodes/LoadTextFileGraceful.html"><img src="docs/comfyui_illumorae_load_text_graceful.png" height="200" /></a>
- <a id="select-item-by-amount-generated"></a>Select ITEM by Amount Generated
Selects an ITEM output based on how many images/frames have been generated so far.
Checkpoint
- <a id="checkpoint-loader-by-string-dirty"></a>Checkpoint Loader By String Dirty
Loads a checkpoint by matching a partial string input to closest registered checkpoint. - <a id="checkpoint-random-selector"></a>Checkpoint Random Selector
Randomly selects a checkpoint from a category/folder at a set interval for model rotation.
Save
- <a id="save-image-extended-folderpath"></a>Save Image Extended FolderPath
Saves images to an external folder path, supporting custom folder and filename formats. - <a id="save-animated-webp-extended-folderpath"></a>Save Animated WebP Extended FolderPath
Saves animated WebP images to a user-specified folder.
LICENSE
- free to all , creative commons zero CC0 1.0 , free to re-distribute , attribution not required