Ino Update Model Config
Tweak a model config without ever touching the JSON
- old_config
- new_config
There are two ways to change the sampler settings in a model config JSON: hand-edit the string, or wire in a node that overrides specific fields and hands you back the updated JSON. Ino Update Model Config is the second way, and once you've rebuilt a workflow after mangling a bracket, you'll appreciate it. It's the editing counterpart to InoShowModelConfig: same family, opposite direction.
You'd reach for it when you want one workflow to serve multiple sampling presets - say, same Flux model, but 20 steps with euler/simple for previews and 40 steps with dpmpp_2m/karras for finals. Instead of maintaining two JSON blobs, keep one and override the differences here.
The inputs that matter
config- the model config JSON you're editing.steps,denoise,cfg,guidance- numeric overrides, each defaulting to-1.sampler_name,scheduler_name- dropdowns pre-filled with ComfyUI's sampler and scheduler lists.use_dual_clip,use_flux_encoder,use_flux_guidance,use_negative_prompt,use_cfg- boolean toggles asunset/true/falsecombos.
Here's the clever bit, and the thing to understand before touching anything: -1 and unset mean "leave it alone." Every override is a sentinel. Set steps to -1 and the config keeps its existing steps. That's what makes this node safe to use as a passthrough - you only change what you actually set. Want to deliberately unset a boolean? You can't from this node, because false and "unchanged" both exist and unset is the only way to say "skip it." That's a minor limitation, not a bug.
How it works
It parses config, applies each non-sentinel override onto the dict, serializes back to JSON, and returns both versions: old_config and new_config. Having the old string on a wire is genuinely useful - log it, compare it, or route on whether anything actually changed. The enabled toggle works like everywhere else in the pack: off means empty outputs and no edits.
The companion flow to know about: this node edits configs, InoShowModelConfig dissects them, and InoLoadSamplerModels / InoGetSamplerConfig consume them. Typical chain - pull a model config, run it through an update here to override steps, hand the result to a sampler loader.
Installing Ino Nodes
One pack install covers all of it. In ComfyUI Manager, search "ComfyUI Ino Nodes", install, restart. Terminal route:
cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/ComfyUI-InoNodes.git
cd comfyui_ino_nodes
pip install -r requirements.txt
V3-schema pack, needs its inopyutils dependency in the same Python environment as ComfyUI, no model downloads. The usual suspects.
Where people get burned
The -1 sentinel trips everyone once. If your override "isn't working," check whether you left the field at -1 - that's "unchanged," not "zero." And because combos default to unset, you can run the node with nothing set and it's a no-op passthrough; that's correct behavior, just surprising the first time.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | true | — |
| config | STRING | — | |
| use_dual_clipopt | COMBO | 3 options: unset, true, false | |
| use_flux_encoderopt | COMBO | 3 options: unset, true, false | |
| use_flux_guidanceopt | COMBO | 3 options: unset, true, false | |
| guidanceopt | FLOAT | -1.00-1–100 | — |
| use_negative_promptopt | COMBO | 3 options: unset, true, false | |
| use_cfgopt | COMBO | 3 options: unset, true, false | |
| cfgopt | FLOAT | -1.00-1–100 | — |
| sampler_nameopt | COMBO | 45 options: unset, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39 | |
| scheduler_nameopt | COMBO | 10 options: unset, simple, sgm_uniform, karras, exponential, ddim_uniform, +4 | |
| stepsopt | INT | -1-1–100 | — |
| denoiseopt | FLOAT | -1.00-1–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| old_config | STRING | — |
| new_config | STRING | — |