Load Models
The node that turns Sage's model bundles into an actual model, CLIP, and VAE
- model_info
- model_shifts
- model
- clip
- vae
Here's the thing to understand about Sage Utils' model system: the selectors don't load anything. When you pick a checkpoint, a CLIP, and a VAE in one of the "selector" nodes, you're building a description - a model_info bundle. Load Models (Sage_LoadModelFromInfo) is the node that takes that description and actually loads the components, expanding into real model, CLIP, and VAE outputs ready for your sampler.
It's the engine room of the whole pack. The selectors get the attention because they're where you do the picking, but nothing works until this node turns the paperwork into hardware.
How it works
It takes one required input, model_info, and one optional input, model_shifts. Internally it uses ComfyUI's GraphBuilder mechanism: rather than being a single node that loads a model in one step, it generates the appropriate loader nodes (checkpoint loader, diffusion-model loader, CLIP loader, VAE loader) from whatever's inside the model_info bundle, then hands you their combined outputs. Because the node is marked expandable, you can peek into the graph and see the actual loader nodes it created - which is great for debugging and for learning what ComfyUI would normally have you wire by hand.
The optional model_shifts input is where the pack's tuning nodes plug in. Feed it a bundle from Model Shifts, Model Shift Only, or FreeU v2 and the loader inserts the shift/FreeU patch nodes into the expanded graph automatically. So your shift and FreeU settings ride along with the model, applied exactly where they belong.
The outputs are the standard three: model (the UNet/diffusion model), clip, and vae. Straight into the sampler.
Why you'd use the model_info system at all
Because it makes swapping models a dropdown change instead of a rewiring job. Build one graph with a selector → Load Models → sampler, and to swap from one checkpoint to another you change the selector, not the wires. This node is what makes the pack's metadata story work too - the same model_info that feeds the loader can feed the metadata nodes, so your saved image's metadata always matches what actually ran.
Installing
It ships with Sage Utils:
cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils.git
cd ComfyUI_SageUtils && pip install -r requirements.txt
Restart ComfyUI (or ComfyUI Manager → "Sage Utils"). No extra models - it loads whatever your selector points at.
Where people get confused
The most common beginner stumble is connecting this node to nothing and wondering why it has no model: it needs a model_info bundle from a selector first - it's not a loader you fill in directly, it's the downstream consumer. Second gotcha: the model_shifts input is a single bundle, so if you chain both a shift node and a FreeU node, use the combined Model Shifts node rather than trying to feed two separate bundles. And because it expands via GraphBuilder, a workflow that uses it looks a little different in the saved JSON than a hand-wired one - don't be surprised if the expanded loader nodes appear when you reload.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_info | MODEL_INFO | — | |
| model_shiftsopt | MODEL_SHIFTS | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | The loaded UNet model component. |
| clip | CLIP | The loaded CLIP model component. |
| vae | VAE | The loaded VAE model component. |