Enviral Design Node Pack
Small, dependency-light ComfyUI utility nodes from Enviral Design.
Nodes (28)
Drive Load Checkpoint from a string, not a hardcoded dropdown
A CLIP text encoder picker that accepts a wired string
Make CLIPLoader's type dropdown follow a string instead of a fixed menu
String-drive the legacy ColorMatch method dropdown
Make one image's palette live in another — on CPU or GPU
Drive the V2 color match method from a string — including the GPU path
Feed UNETLoader's unet_name from a string — the dropdown adapter
One resize node that does pass-through, pad, crop, and stretch — without the math
Same prompt, same seed, same composition every time? This node fixes that
A 20-way switch that only evaluates the branch you actually pick
Ask a local LLM to look at your image — straight from the graph
Stop scrolling a 400-file checkpoint dropdown
A diffusion-model loader that only shows the models you want
A native-feeling LoRA loader whose name you can drive from a string
A LoRA loader whose dropdown only shows one folder
LoRA loading for WAN-style chains that don't touch CLIP
Load the right text encoder without the 100-option hunt
Pick your LoRA from a dropdown or a wired string
FP16 accumulation is a ComfyUI flag you have to restart for. This node kills the restart
KSampler's sampler dropdown, but drivable by a string
Make KSampler's scheduler choice follow a string
Split one text string into twenty parts and a remainder — for real workflows
A VAE picker you can wire a string into
Stop Guessing WAN's Magic Number — Snap It to 32
Point a camera at your image and re-render it from there
Load the two Depth-Anything-3 brains behind MetaView
The MetaView renderer, loaded the ComfyUI way
The sigma schedule your MetaView sampler actually needs
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_1throughpart_20remaindercount
Behavior:
output_countcontrols how many leading parts are emitted before overflow is collected intoremainderstrip_partstrims whitespace around each partskip_emptyremoves empty parts after splittingdelimitersupports 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
INDEXoutput - 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 modifyrandomize_percent: percentage of embedding values that receive noisestrength: noise scale; add1,000,000,000to use the upstream v2.1 seed behaviornoise_insert: applies noisy conditioning to beginning steps, ending steps, all steps, or disables the nodesteps_switchover_percent: sampler-step split point when using beginning or ending step modesseed: deterministic seed for noise values and mask selectionmask_starts_atandmask_percent: protect part of the prompt embedding from noiselog_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 NameEnviral Scheduler NameEnviral Checkpoint NameEnviral Diffusion Model NameEnviral CLIP NameEnviral CLIP TypeEnviral VAE NameEnviral LoRA NameEnviral Color Match MethodEnviral 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/heightexplicit resize: stretches the image to the requested width and heightinside fit: preserves the full image, pads to the requested aspect ratio, fills padding withletterbox_color, then outputs the requested width and heightoutside fit: fills the requested aspect ratio and center-crops overflow
Inputs:
image: input image batchmode: resize mode dropdown or linked string aliaswidthandheight: requested output dimensions, ignored bypass-throughletterbox_color: used only byinside fit; accepts simple names,R,G,B,0.0-1.0float 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 recolorimage_ref: image batch to sample color frommethod:mkl,hm,reinhard,mvgd,hm-mvgd-hm,hm-mkl-hm, orreinhard_lab_gpustrength: blend/extrapolation amount, where0is unchanged and1is the matched resultmultithread: 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 patchclip: optional CLIP model to patch; leave disconnected for model-only LoRAsfolder:All LoRAsor any current LoRA folder prefix; nested folders are included in their parent filterbanks: number of visible LoRA banks, from one to fiveallow_list: optional STRING input intended for ComfyUI's nativeText (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
banksadds 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 underAll 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 Checkpointreturnsmodel,clip,vae, andcheckpoint_list.Enviral Load Diffusion Modelreturnsmodelanddiffusion_model_list, while retaining the nativeweight_dtypechoices.Enviral Load Text Encoderreturnsclipandtext_encoder_list, while retaining the native encodertypeand optionaldevicechoices.
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 patchenable_fp16_accumulation: togglestorch.backends.cuda.matmul.allow_fp16_accumulationwhile 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:customor common square, landscape, portrait, and 4:3 presetswidthandheight: freeform custom dimensions, used whenpresetiscustomsnap:nearest,floor, orceildivisible_by: output divisor, defaulting to32swap: swaps width and height before snapping
Outputs:
widthandheightas integerswidth_floatandheight_floatfor nodes that expect float socketssummary, such as768 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: acceptshttp://127.0.0.1:1234/v1,https://lmstudio.example.com, or a full/v1/chat/completionsURLapi_key: optional bearer token for LM Studio API-token authapi_key_env_var: optional environment variable fallback whenapi_keyis blank, defaulting toLMSTUDIO_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, andtimeout_seconds- optional
imageinput for vision-capable models. If the input is an IMAGE batch, each frame is sent as a separateimage_urlcontent part, capped bymax_images user_agent: HTTP User-Agent override for routes that block Python's default urllib signaturedebug: 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: