ComfyUI Extension: Enviral Design Node Pack
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Small, dependency-light ComfyUI utility nodes from Enviral Design.
Looking for a different extension?
Custom Nodes (0)
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_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
Native-style LoRA loader that keeps ComfyUI's LoRA application behavior but
allows lora_name to be driven by a linked string.
Inputs:
model: diffusion model to patchclip: CLIP model to patchlora_name: dropdown or linked string matching a LoRA path known to ComfyUIstrength_model: diffusion model LoRA strengthstrength_clip: CLIP LoRA strength
Outputs:
- patched
model - patched
clip
Enviral Load LoRA (Model Only)
Model-only variant for workflows such as WAN where the LoRA chain patches the diffusion model without a CLIP connection.
Inputs:
model: diffusion model to patchlora_name: dropdown or linked string matching a LoRA path known to ComfyUIstrength_model: diffusion model LoRA strength
Output:
- patched
model
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:
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.