Model Select π
One node instead of a loader stack and a pile of settings
- model_override
- clip_override
- vae_override
- model
- model_negative
- positive
- negative
- clip
- vae
- sampler_settings
- prompt
- triggers
- info
- gen_extra_info
- model_id
If Model Capture is the one-time cost, Model Select is the permanent payoff. It's the node that turns "that loader stack plus the pile of Sampler Settings for the other model plus the switch logic to pick between them" into two dropdowns on one node. Pick a model and one of its saved sampler presets, and Model Select rebuilds the model's whole assembly - loaders, patches, everything - from the library Capture stored. The workflow holds one node where it used to hold a graph.
The two dropdowns are the whole UX, and the second one is the clever bit: preset narrows to what's valid for the chosen model. Not a flat list of every preset you ever saved - just that model's own presets plus any shared with its families. Pick a model, land on its default preset, done. There's a π· family filter above the model list to tame a dozen community finetunes of the same base, and it's deliberately not a node input - it lives in node.properties so flipping it doesn't invalidate the cache and force a re-sample.
What comes out is the full kit: model, model_negative (present when the bundle has an unconditional-pass model - wire it into Chimera's model_negative), clip, vae, sampler_settings, width, height, info, gen_extra_info, and model_id. The sampler_settings output is a SAMPLER_CFG chain, so a saved multi-stage preset drops straight into Chimera's stage_a (it flattens chains into stages) or into Ouroboros. This node is how you'd actually run the pack's fancy samplers with a library of models.
The remaining inputs are the ones that give you control without the graph:
seed_override--1uses the seed stored in the preset; anything else replaces it on every stage. A preset records the seed it was measured with, which is worth keeping but not worth being stuck with.width/height- fallback size, used only when the chosen preset has no size of its own. A preset saved with a latent wired into Settings Save carries the real size and wins.unload_others- on by default: frees every other model (ComfyUI's resident models plus the library's cache) so one model is resident at a time. Turn it off on a big GPU to keep switching fast at the cost of RAM.model_override/clip_override/vae_override- the escape hatch for assemblies Capture refused (a merge, a LoRA fork, a node that needs execution context). Keep those loaders in the graph, wire them in, and presets keep working. There's no assembly this node can't serve, only ones it can't store.
Installing
Ships in Kinburg-Nodes: ComfyUI Manager β search "Kinburg-Nodes", or clone into custom_nodes and restart. No extra dependencies - but the library it reads has to exist, and that's built with Model Capture (wire a working loader stack in once, run in preview then register, then delete the loaders).
Gotchas
The dropdown starts at π« None for a reason - a model must be registered first, or there's nothing to select. π« None on the preset loads the model but emits no settings, so if you pick a model and forget the preset, Chimera/Ouroboros get a model with no instructions. And remember the one-heavy-thing discipline: with unload_others on, switching models unloads the previous one, which is exactly right on a 12 GB card and a mild annoyance on a 24 GB one.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | π« None | A model registered in the library. Build the library with Model Capture: wire a working loader stack into it once, then delete those loaders from the workflow. |
| preset | COMBO | π« None | Saved sampler settings for THIS model β the list narrows to what's valid for the chosen model (its own presets plus any shared with its families). 'π« None' loads the model but emits no settings. Save presets with Settings Save. |
| seed_override | INT | -1-1β18446744073709550000 | -1 = use the seed stored in the preset. Anything else replaces the seed on every stage β a preset records the seed it was measured with, which is worth keeping but not worth being stuck with. |
| unload_others | BOOLEAN | true | Free every other model first (ComfyUI's resident models plus the library's own cache of previously built bundles), so one model is resident at a time. Turn off on a big GPU to keep switching between models fast at the cost of RAM. |
| model_overrideopt | MODEL | Escape hatch: a MODEL wired here wins over the library. For an assembly Model Capture refused (a merge, a LoRA fork, a node that needs execution context) β keep those loaders in the graph and wire them in; presets keep working. | |
| clip_overrideopt | CLIP | As 'model_override', for CLIP. | |
| vae_overrideopt | VAE | As 'model_override', for VAE. | |
| promptopt | STRING | Your prompt. Comes back out of 'prompt' with the bundle's LoRA trigger words appended, and β since the CLIP is right here β encoded into 'positive'. Leave it unwired and no text is encoded at all. | |
| negative_promptopt | STRING | Optional negative prompt. Left unwired, 'negative' is the positive conditioning ZEROED OUT (what the flow models want) rather than the encoding of an empty string. |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| model_negative | MODEL | β |
| positive | CONDITIONING | β |
| negative | CONDITIONING | β |
| clip | CLIP | β |
| vae | VAE | β |
| sampler_settings | KINBURG_SAMPLER_CFG | β |
| prompt | STRING | β |
| triggers | STRING | β |
| info | STRING | β |
| gen_extra_info | GEN_INFO | β |
| model_id | STRING | β |