Extensions/Enviral Design Node Pack
ComfyUI Extension

Enviral Design Node Pack

Small, dependency-light ComfyUI utility nodes from Enviral Design.

By EnviralDesign·Created 4 months ago·Updated 19 days ago· 1
EnviralDesign/comfyUI-enviral-design-node-pack
Nodes28
On cloudLocal install
CategoryEnviralDesign/selectors, EnviralDesign/image
Stars1
Updated19 days ago

Nodes (28)

Enviral Checkpoint Name

Drive Load Checkpoint from a string, not a hardcoded dropdown

EnviralDesign/selectors
Enviral CLIP Name

A CLIP text encoder picker that accepts a wired string

EnviralDesign/selectors
Enviral CLIP Type

Make CLIPLoader's type dropdown follow a string instead of a fixed menu

EnviralDesign/selectors
Enviral Color Match Method

String-drive the legacy ColorMatch method dropdown

EnviralDesign/selectors
Enviral Color Match V2

Make one image's palette live in another — on CPU or GPU

EnviralDesign/image
Enviral Color Match V2 Method

Drive the V2 color match method from a string — including the GPU path

EnviralDesign/selectors
Enviral Diffusion Model Name

Feed UNETLoader's unet_name from a string — the dropdown adapter

EnviralDesign/selectors
Enviral Image Resize Kit

One resize node that does pass-through, pad, crop, and stretch — without the math

EnviralDesign/image
Enviral Krea2 Seed Variance Enhancer

Same prompt, same seed, same composition every time? This node fixes that

EnviralDesign/conditioning
Lazy Index Switch

A 20-way switch that only evaluates the branch you actually pick

EnviralDesign/utility
LM Studio Unified (URL + API Key)

Ask a local LLM to look at your image — straight from the graph

EnviralDesign/llm
Enviral Load Checkpoint

Stop scrolling a 400-file checkpoint dropdown

EnviralDesign/model
Enviral Load Diffusion Model

A diffusion-model loader that only shows the models you want

EnviralDesign/model
Enviral Load LoRA (Deprecated)

A native-feeling LoRA loader whose name you can drive from a string

EnviralDesign/model
Enviral Load LoRA

A LoRA loader whose dropdown only shows one folder

EnviralDesign/model
Enviral Load LoRA (Model Only, Deprecated)

LoRA loading for WAN-style chains that don't touch CLIP

EnviralDesign/model
Enviral Load Text Encoder

Load the right text encoder without the 100-option hunt

EnviralDesign/model
Enviral LoRA Name

Pick your LoRA from a dropdown or a wired string

EnviralDesign/selectors
Model Patch Torch Settings

FP16 accumulation is a ComfyUI flag you have to restart for. This node kills the restart

EnviralDesign/model
Enviral Sampler Name

KSampler's sampler dropdown, but drivable by a string

EnviralDesign/selectors
Enviral Scheduler Name

Make KSampler's scheduler choice follow a string

EnviralDesign/selectors
Text Split (Delimiter)

Split one text string into twenty parts and a remainder — for real workflows

EnviralDesign/text
Enviral VAE Name

A VAE picker you can wire a string into

EnviralDesign/selectors
WAN Resolution Snap

Stop Guessing WAN's Magic Number — Snap It to 32

EnviralDesign/video
MetaView 3D Conditioning

Point a camera at your image and re-render it from there

EnviralDesign/MetaView
MetaView DA3 Loader

Load the two Depth-Anything-3 brains behind MetaView

EnviralDesign/MetaView
MetaView Model Loader

The MetaView renderer, loaded the ComfyUI way

EnviralDesign/MetaView
MetaView Sigmas

The sigma schedule your MetaView sampler actually needs

EnviralDesign/MetaView
Readme

comfyUI-enviral-design-node-pack

Small, dependency-light ComfyUI utility nodes from Enviral Design.

The goal of this pack is to keep genuinely useful glue nodes in one place without pulling in a large third-party custom-node bundle just to get one tiny piece of functionality.

Companion use with LatentSlate

This pack is intended to be a stable companion utility pack for LatentSlate-oriented ComfyUI workflows while remaining useful on its own.

The nodes here are intentionally small, stable, and dependency-light. They cover workflow glue that is useful around provider-driven image generation, image-to-video, resizing, resolution snapping, color matching, local LLM calls, and narrow PyTorch model-setting patches.

This repo does not claim to be a required dependency for LatentSlate. If a LatentSlate workflow package needs one of these nodes, that workflow should list the dependency explicitly. Planned workflow package notes live in workflows/README.md.

Included

Text Split (Delimiter)

Splits an input string using a delimiter and returns:

  • part_1 through part_20
  • remainder
  • count

Behavior:

  • output_count controls how many leading parts are emitted before overflow is collected into remainder
  • strip_parts trims whitespace around each part
  • skip_empty removes empty parts after splitting
  • delimiter supports common escape strings such as \n, \r\n, \r, and \t

This node intentionally uses a fixed socket layout instead of dynamic outputs so saved workflows stay predictable and easy to debug.

Lazy Index Switch

Selects one of input_0 through input_19 using a zero-based index value.

Behavior:

  • accepts any ComfyUI type on its input sockets
  • evaluates only the selected input branch
  • pairs with combo-style nodes that expose an INDEX output
  • reports a clear validation error if the selected input is not connected

Enviral Krea2 Seed Variance Enhancer

Adds seeded random noise to CLIP text conditioning embeddings for Krea2, Z-Image Turbo, and similar workflows where prompt-embedding variation can help break repeated compositions.

Inputs:

  • conditioning: CLIP text conditioning to modify
  • randomize_percent: percentage of embedding values that receive noise
  • strength: noise scale; add 1,000,000,000 to use the upstream v2.1 seed behavior
  • noise_insert: applies noisy conditioning to beginning steps, ending steps, all steps, or disables the node
  • steps_switchover_percent: sampler-step split point when using beginning or ending step modes
  • seed: deterministic seed for noise values and mask selection
  • mask_starts_at and mask_percent: protect part of the prompt embedding from noise
  • log_to_console: prints tensor statistics and suggested strength ranges

This is adapted from ChangeTheConstants' MIT-0 SeedVarianceEnhancer v2.2.0. The Enviral version avoids mutating PyTorch's global RNG state and guards untagged conditioning metadata so it behaves more predictably inside larger node chains.

Typed Name Selectors

Adapts linked strings, including strings from ComfyUI's built-in Custom Combo node, into exact native combo output types for common model and sampler fields.

Included nodes:

  • Enviral Sampler Name
  • Enviral Scheduler Name
  • Enviral Checkpoint Name
  • Enviral Diffusion Model Name
  • Enviral CLIP Name
  • Enviral CLIP Type
  • Enviral VAE Name
  • Enviral LoRA Name
  • Enviral Color Match Method
  • Enviral Color Match V2 Method

Behavior:

  • each node has a normal dropdown for its native ComfyUI option list
  • each node also accepts a linked string matching one current ComfyUI option exactly, or by an unambiguous case/path-separator/path-suffix match
  • the output socket uses the exact native combo type expected by downstream nodes such as KSampler, Load Checkpoint, Load Diffusion Model, Load CLIP, Load VAE, and native LoRA loaders
  • invalid linked strings fail validation before the downstream loader or sampler runs, with close-match suggestions when available

Use Enviral Color Match Method for legacy ColorMatch nodes with CPU methods: mkl, hm, reinhard, mvgd, hm-mvgd-hm, and hm-mkl-hm. Use Enviral Color Match V2 Method for V2 color match nodes that also expose reinhard_lab_gpu.

Enviral Image Resize Kit

Resizes an image with a small set of explicit workflow-friendly modes:

  • pass-through: keeps the input image resolution and ignores width/height
  • explicit resize: stretches the image to the requested width and height
  • inside fit: preserves the full image, pads to the requested aspect ratio, fills padding with letterbox_color, then outputs the requested width and height
  • outside fit: fills the requested aspect ratio and center-crops overflow

Inputs:

  • image: input image batch
  • mode: resize mode dropdown or linked string alias
  • width and height: requested output dimensions, ignored by pass-through
  • letterbox_color: used only by inside fit; accepts simple names, R,G,B, 0.0-1.0 float triples, or #RRGGBB
  • optional mask: transformed with the same geometry as the image

The mode input is a dropdown, but it also accepts linked strings such as resize, pad, crop, and pass-through. This makes it pair cleanly with combo nodes that output strings. Optional masks are transformed with the same geometry and the node returns image, width, height, and mask.

Enviral Color Match V2

Transfers color from a reference image batch to a target image batch.

Inputs:

  • image_target: image batch to recolor
  • image_ref: image batch to sample color from
  • method: mkl, hm, reinhard, mvgd, hm-mvgd-hm, hm-mkl-hm, or reinhard_lab_gpu
  • strength: blend/extrapolation amount, where 0 is unchanged and 1 is the matched result
  • multithread: enables threaded CPU processing for multi-image batches

The CPU methods use color-matcher. The reinhard_lab_gpu method uses ComfyUI's Kornia dependency for Lab-space matching and requires both inputs to be RGB IMAGE tensors with 3 channels. The method input can be driven by Enviral Color Match V2 Method when the choice needs to come from a string-producing node.

Enviral Load LoRA

LoRA loader with folder and text allow-list filtering, up to five independently bypassable LoRA banks, and a text output containing the final visible list. The folder and LoRA choices come from ComfyUI's registered LoRA paths, including paths supplied through extra_model_paths.yaml.

Inputs:

  • model: diffusion model to patch
  • clip: optional CLIP model to patch; leave disconnected for model-only LoRAs
  • folder: All LoRAs or any current LoRA folder prefix; nested folders are included in their parent filter
  • banks: number of visible LoRA banks, from one to five
  • allow_list: optional STRING input intended for ComfyUI's native Text (Multiline) node; each non-empty line keeps an exact displayed name or full relative LoRA path
  • each bank has a LoRA dropdown plus separate model and CLIP strengths; a bank is bypassed when both strengths are zero; changing banks adds or removes complete bank controls while retaining their values during the session

Outputs:

  • patched model
  • patched clip
  • lora_list: newline-separated final dropdown options; names are relative to the selected folder, or include full relative paths under All LoRAs

The node uses ComfyUI's normal combo refresh behavior. Press R on the canvas or use Refresh Node Definitions to re-enumerate LoRAs and folders, then reapply the folder and allow-list filters. Saved selections are preserved when still valid and otherwise move to the first visible option. Refreshes do not resize the node; only changing the number of visible banks adjusts its height.

The earlier standard and model-only Enviral LoRA loaders remain registered for existing workflows but are deprecated and hidden from normal node discovery.

Filtered Model Loaders

Three single-selection loaders use the same folder, allow-list, relative-label, and visible-list behavior as Enviral Load LoRA:

  • Enviral Load Checkpoint returns model, clip, vae, and checkpoint_list.
  • Enviral Load Diffusion Model returns model and diffusion_model_list, while retaining the native weight_dtype choices.
  • Enviral Load Text Encoder returns clip and text_encoder_list, while retaining the native encoder type and optional device choices.

Each has one selection only—there are no banks. The selection continues to use the full relative ComfyUI path for loading; when a folder is chosen, the dropdown and list output omit that redundant folder prefix.

Model Patch Torch Settings

Experimental node that patches a compatible ComfyUI MODEL with callbacks for one CUDA PyTorch backend setting.

Inputs:

  • model: model to clone and patch
  • enable_fp16_accumulation: toggles torch.backends.cuda.matmul.allow_fp16_accumulation while the model runs

When enabled, the patched model turns full FP16 accumulation on before model execution and turns it back off during cleanup. When disabled, it forces the setting off before model execution. This requires a PyTorch build that exposes torch.backends.cuda.matmul.allow_fp16_accumulation and a ComfyUI model patcher with clone() and add_callback() support.

WAN Resolution Snap

Converts a preset or custom typed resolution into divisor-safe dimensions for WAN video workflows.

Inputs:

  • preset: custom or common square, landscape, portrait, and 4:3 presets
  • width and height: freeform custom dimensions, used when preset is custom
  • snap: nearest, floor, or ceil
  • divisible_by: output divisor, defaulting to 32
  • swap: swaps width and height before snapping

Outputs:

  • width and height as integers
  • width_float and height_float for nodes that expect float sockets
  • summary, such as 768 x 1344 | 1.03 MP | 4:7 | div32

If snapping changes the requested dimensions, summary also appends the source size, for example | from 1000 x 540.

LM Studio Unified (URL + API Key)

Sends text, an image, or both to an LM Studio OpenAI-compatible chat endpoint.

Inputs:

  • base_url: accepts http://127.0.0.1:1234/v1, https://lmstudio.example.com, or a full /v1/chat/completions URL
  • api_key: optional bearer token for LM Studio API-token auth
  • api_key_env_var: optional environment variable fallback when api_key is blank, defaulting to LMSTUDIO_API_KEY. On Windows, this checks the current process first, then the User and Machine environment variable registry values.
  • model, prompt, system_prompt, seed, max_tokens, temperature, and timeout_seconds
  • optional image input for vision-capable models. If the input is an IMAGE batch, each frame is sent as a separate image_url content part, capped by max_images
  • user_agent: HTTP User-Agent override for routes that block Python's default urllib signature
  • debug: prints request details to the ComfyUI console

For a secured Cloudflare route, use a public base_url such as:

https://lmstudio.enviral-design.com

The node will call:

https://lmstudio.enviral-design.com/v1/chat/completions

Install

Clone this repo into ComfyUI/custom_nodes and restart ComfyUI.

ComfyUI/custom_nodes/comfyUI-enviral-design-node-pack

Most nodes use ComfyUI's existing Python, PyTorch, Pillow, and NumPy environment. Enviral Color Match V2 also uses color-matcher for its CPU methods; that dependency is declared in pyproject.toml. If you install this repo manually and see a missing color_matcher import, install color-matcher into the same Python environment that runs ComfyUI.

Workflow examples

This repo currently documents nodes and planned workflow packages. It does not currently bundle executable workflow JSON files. See workflows/README.md for the planned package list and status.

Donations & Support

If this saves you time, you can support the work here: