Nodes/Kinburg-Nodes/Model Capture πŸ“₯
ComfyUI Node

Model Capture πŸ“₯

Save your whole loader stack once, delete it forever

By KinburgΒ·Created 3 months agoΒ·Updated 6 days agoΒ· 1
Model Capture πŸ“₯
  • model
  • clip
  • vae
  • model_negative
  • sampler_settings
  • report
β—„model_idβ–Ί
β—„modepreviewβ–Ί
β—„familiesβ–Ί
β—„notesβ–Ί
β—„preset_nameβ–Ί

A model in ComfyUI is rarely just a file. krea2 is a UNET plus a CLIP plus a VAE; z_image_turbo adds a ModelSamplingAuraFlow with its own shift; Ideogram adds a second unconditional model and a CFG override on top; old checkpoints carry CLIP and VAE inside. Every one of those is a mini-graph of loader and patch nodes, and swapping models means rewiring that stack and remembering which settings belonged to which - every single time. Model Capture is the one-time cost that ends that ritual: you wire a loader stack you already have working into this node, give it a name, and it stores the whole assembly in a library. Then you delete the loaders and call the model by name forever after, via the pack's Model Select node.

The mechanism is the impressive part, because it's not a list of known loader types - it hardcodes no node types at all. Capture walks its own inputs upstream through the queued prompt and stores that slice of the graph as the model's recipe; classes are looked up in ComfyUI's NODE_CLASS_MAPPINGS (the one registry that holds builtin and third-party, V1 and V3), so a model that ships tomorrow with its own custom loader works with no code change - as long as it was captured once. It also loads nothing: the inputs are declared lazy and never requested, so capturing a 40 GB assembly costs no VRAM and no time. You run it, it reports what it found, and nothing heavy ever touches the card.

The inputs that matter:

  • model_id - the stable id that becomes the label in Model Select's dropdown. Choose once; renaming later is done from the Manage dialog so presets follow.
  • mode - preview first, always. Preview reports what it captured and writes nothing. register saves the bundle, replacing this id's recipe while keeping its presets, families and notes.
  • model - the finished MODEL after every patch; wire the last node of the chain. clip and vae optional (Capture notices when they share a loader node and Model Select makes one call for all three); model_negative for the Ideogram-style second model.
  • families - comma-separated family tags (e.g. flow-1024). Presets saved as SHARED for a family show up for every model in it, so one good recipe serves five finetunes without being copied.
  • notes - free text shown in Model Select's info panel: what this model likes, its cfg range, its quirks.

Output is a single report - what it captured, what it refused, and why.

Installing

Ships in Kinburg-Nodes: ComfyUI Manager β†’ search "Kinburg-Nodes", or clone into custom_nodes and restart. No extra dependencies for capture itself - it's graph introspection.

Gotchas

Capture is deliberately honest about what it won't store: anything needing execution context (hidden inputs), list in/out, subgraph expansion, or an output node gets refused by name and reason. Those assemblies stay in the graph - and that's what Model Select's model_override / clip_override / vae_override inputs are for, so you're never locked out. And a typo in families doesn't error - it just silently stops shared presets from appearing. Use the οΌ‹ family picker instead of typing.

CategoryKinburg-Nodes/model

Inputs (10)

NameTypeDefaultDescription
model_idSTRINGStable id for this model β€” the label in Model Select's dropdown and the key its presets hang off. Choose it once; renaming later is done from the Manage dialog so the presets follow.
modeCOMBOpreview'preview' reports what it captured and writes NOTHING (run this first). 'register' saves the bundle to the library, replacing this id's recipe while keeping its presets, families and notes.
modeloptMODELThe finished MODEL of this assembly β€” after every patch (shift, CFG override, …). Wire the last node of the chain.
clipoptCLIPThe CLIP for this model. For an old checkpoint that carries its own, wire it from the same loader β€” Capture notices they share a node and Model Select will make one call for all three.
vaeoptVAEThe VAE for this model (from its own loader, or from the checkpoint).
model_negativeoptMODELOptional second MODEL for the unconditional pass β€” for checkpoints shipped as a pair (Ideogram). Comes out of Model Select on its own output, ready for Chimera's 'model_negative'.
familiesoptSTRINGComma-separated families this model belongs to, e.g. 'flow-1024'. Presets saved as SHARED for a family show up for every model in it β€” that's how one 'good 12-step recipe' serves five models without being copied five times. Use the 'οΌ‹ family' picker below to add one that already exists: a typo here doesn't error, it just quietly stops shared presets from showing up.
notesoptSTRINGFree notes shown in Model Select's info β€” what this model likes: cfg range, scheduler, quirks.
sampler_settingsoptKINBURG_SAMPLER_CFGOptional: a Sampler Settings chain to store as this model's FIRST preset, in the same run that registers it. Needs 'preset_name'. Later presets β€” the ones with a measured score and time β€” go through Settings Save instead.
preset_nameoptSTRINGName for the preset made from 'sampler_settings'. Empty = register the model only. Becomes the model's default preset when it is the only one.

Outputs (1)

NameTypeDescription
reportSTRINGβ€”