⭐ Star Ming Unbound + Shift
Two model patches in one wire, and only one of them bites
- model
- model
This node does two things to a MODEL, and you only see one of them most of the time. It sets the flow-matching sampling shift, and it patches the model's text stack with what the pack calls an "Unbound" prompt-adherence enhancer. Both are applied to a clone of the model, so nothing upstream gets mutated.
The honest reason to reach for it: shift is where sampler tuning went. On flow-matching models, Karras and exponential schedulers fail outright rather than merely underperform, so the knob that pays is the timestep shift - how sampling effort splits between composition and detail. ComfyUI's default of 3 is wrong for several models. If you've used ModelSamplingAuraFlow or ModelSamplingSD3, you know the gesture.
What the Unbound half does
Worth understanding, because the name promises more than it delivers on most models.
The enhancer hooks the model's text-fusion forward pass and runs it twice: once as normal (the reference), once on a deliberately gain-boosted copy of the text embedding - a fixed per-chunk gain profile with a large global boost baked in. It then adds the difference between the two outputs back onto the reference, scaled and capped so the delta can't exceed 75% of the reference's magnitude. In plain terms: amplify parts of the text representation hard, measure what changes, inject a bounded fraction of it. The cap is what keeps it from wrecking a generation.
The catch is the gate. It only fires on a text stack that matches a very specific shape - twelve layers at 2560 dimensions, the Krea2-style text fusion. Anything else passes through untouched. The author's own help page is upfront about this, and it's the most useful thing on it: on Ming-Image, the Unbound enhancer passes through cleanly. So on the model the node is named after, you're buying the shift. On a Krea2-family model, you get both. On Z-Image or another discrete-flow model, you get the shift only.
That's not a defect, but it is the thing to know before you A/B it and wonder why nothing happened.
Inputs and output
- model (MODEL) - the model to patch. Wire it between your loader and your sampler. After a LoRA loader is fine too; just pick one order and stick to it.
- shift (FLOAT, default 3.16, range 0–100) - the sampling shift. Higher concentrates steps on high-noise steps (more structure shaping); lower spreads the schedule more evenly. The default is Ming-Image's reference dynamic-shift value at the 1024 bucket.
Output is a single model (MODEL) for the sampler.
The implementation is careful in a way worth crediting: it replaces the model's sampling object but carries over the model's own multiplier and noise_scale. You're changing the shift and nothing else.
Picking a number
Start from the model card, not from the default. Model-specific shift values are real - Z-Image Turbo, for instance, wants about 7 against ComfyUI's default of 3. Leaving this node at its default on a model that wants 7 is roughly "did nothing useful". The pattern across models: raise shift to lock composition in early, lower it when you're chasing fine detail.
Install
ComfyUI Manager, search Starnodes. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, then look in ⭐StarNodes / Sampler. This node needs nothing but ComfyUI core and PyTorch - the pack's heavier requirements are for its other nodes.
Gotchas
Some schedulers ignore your shift. Certain samplers apply their own sigma shift internally (bong_tangent is the one people hit), so the value appears to do nothing until you change scheduler. If shift seems inert, that's the first thing to test.
Anything downstream that patches sampling overrides it. Any other model-sampling patch after this node wins. Keep exactly one in the graph.
It's a monkeypatch of model internals. The Unbound half swaps a forward method on the loaded model's text stack at run time. That's legitimate - it's how a lot of clever ComfyUI nodes work - but it's also the kind of thing a ComfyUI update or a model-code change can break quietly. If generations start looking off after an update and this node is in the graph, bypass it first.
Ming-Image is new and thinly documented. There's very little written about it in English-language communities so far, so the pack's own built-in help page (select the node, open its help panel) is genuinely the best reference you have. Keep expectations accordingly.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| shift | FLOAT | 3.160–100 | Model sampling shift. Ming-Image defaults to 3.16 (the reference dynamic shift at the 1024 bucket). Higher values concentrate sampling on high-noise steps. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |