Nodes/Kinburg-Nodes/Settings Save πŸ’Ύ
ComfyUI Node

Settings Save πŸ’Ύ

Stop remembering, start a preset library that scores itself

By KinburgΒ·Created 3 months agoΒ·Updated 6 days agoΒ· 1
Settings Save πŸ’Ύ
  • sampler_settings
  • latent
  • sampler_settings
  • report
β—„model🚫 Noneβ–Ί
β—„preset_nameβ–Ί
β—„model_idβ€”β–Ί
β—„sharedfalseβ–Ί
β—„familiesβ–Ί
β—„tagsβ–Ί
β—„set_defaultfalseβ–Ί
β—„notesβ–Ί
β—„scoreβ€”β–Ί
β—„secondsβ€”β–Ί

Every "what settings did I use for that good one?" is a memory problem that Settings Save turns into a lookup. It's a pass-through node - wire it between a Sampler Settings chain and Ouroboros / Chimera, fill in a preset_name, and the whole multi-stage recipe is filed into a model's preset library, optionally tagged with the measured score and time it actually took. The next time you want that look, Settings Select (or Model Select) pulls it back out with "β˜…4.40 Β· 31.2s" right there in the picker.

The one rule that trips people up

It saves only while preset_name is non-empty, and re-saving the same name overwrites. That's a deliberate design choice: the values worth recording arrive over wires (score, time), and a frontend button can't see those. But it means the node sits in your graph permanently, saving nothing, until you type a name - and if you leave a name in there, every re-run overwrites the preset. Get in the habit of clearing the field when you're done exploring, or use it as intended: name it when a recipe earns it.

The inputs that make it worth wiring

  • sampler_settings - the chain, passes through unchanged. Chain several Sampler Settings nodes and the whole multi-stage recipe is stored as one preset; Chimera flattens it back into stages.
  • model vs model_id - the dropdown is the manual route; wiring Model Select's model_id output here files the preset under the model that actually ran, with no second pick to keep in sync and no way to file it under the wrong model by mistake. The wired input wins.
  • score and seconds - the part that makes the library useful instead of a notebook. Wire Ouroboros's best_score (or a Vision Judge score pulled out of its results_json) and Chimera's seconds output - Chimera times its own sampling, so the number can't be skewed by the rest of the graph. Model Select then shows and sorts by them.
  • latent - optional, but its size is stored with the preset and comes back out of Model Select's width/height, so the preset carries the resolution the model likes.
  • shared + families - save into the family-wide pool instead of under one model. A model declares families (e.g. flow-1024); a shared preset with matching families shows up for every model in them, so one good generic recipe isn't copied per model. The classic footgun: a typo'd family is silent - the preset simply never appears anywhere. Use the οΌ‹ family dropdown of existing families rather than typing.
  • tags, set_default, notes - filtering, which preset the picker lands on, and what the recipe traded off.

Outputs: sampler_settings (the passthrough) and report.

Installing it

Same pack: ComfyUI Manager β†’ "Kinburg-Nodes", or git clone https://github.com/Kinburg/Kinburg-Nodes into ComfyUI/custom_nodes, restart. No dependencies. It's part of the pack's model-preset system (Model Capture β†’ Model Select β†’ Settings Save/Select), so it's most useful once you've registered at least one model - but the shared/family path works without per-model capture if that's all you need.

CategoryKinburg-Nodes/model

Inputs (12)

NameTypeDefaultDescription
sampler_settingsKINBURG_SAMPLER_CFGThe chain to save β€” passes through unchanged. Chain several Sampler Settings and the whole multi-stage recipe is stored as one preset (Chimera flattens it back into stages).
modelCOMBO🚫 NoneWhich model these settings belong to. Register models with Model Capture first. Ignored when 'shared' is on, and overridden when 'model_id' is wired.
preset_nameSTRINGName to save under β€” SAVING HAPPENS WHEN THIS IS NON-EMPTY, and re-saving the same name overwrites. Clear the field to leave the library alone.
model_idoptSTRINGWire Model Select's 'model_id' output here and the preset is filed under the model that actually ran β€” no second pick to keep in sync, and no way to file it under the wrong one by mistake. Wins over the 'model' dropdown.
sharedoptBOOLEANfalseSave into the family-wide pool instead of under one model. Fill 'families' too β€” the preset then shows up in Model Select for every model that declares a matching family, so a good generic recipe isn't copied per model.
familiesoptSTRINGComma-separated families this preset applies to (only meaningful with 'shared'), e.g. 'flow-1024'.
tagsoptSTRINGComma-separated labels for filtering a growing library, e.g. 'fast, portrait'.
set_defaultoptBOOLEANfalseMake this the model's default preset β€” what the picker lands on when you choose the model. Clears the flag on the model's other presets.
notesoptSTRINGWhat this preset is for / what it traded off. Shown in Model Select's info.
scoreoptFLOATMeasured quality β€” wire Ouroboros' 'best_score', or a Vision Judge score pulled out of its results_json. Stored with the preset and shown in the picker.
secondsoptFLOATMeasured cost β€” wire Chimera's 'seconds' output (it times its own sampling, so it can't be skewed by the rest of the graph).
latentoptLATENTOptional: the latent this preset was run at. Its size is stored with the preset and comes back out of Model Select's width / height, so the preset carries the resolution the model likes.

Outputs (2)

NameTypeDescription
sampler_settingsKINBURG_SAMPLER_CFGβ€”
reportSTRINGβ€”