MBQ Wedge
Sweep CFG, steps, or denoise in one Queue click
- int_value
- float_value
The most boring loop in ComfyUI is also one of the most common: you settle on a seed, then tweak CFG, render, squint, tweak again. MBQ Wedge kills that loop. Wire its output to any numeric input, set a range, hit Queue once - and you get one image per value, each PNG stamped with the exact value that produced it.
The name is photography jargon: a "wedge" is bracketing, shooting the same subject across a few exposures so you can pick the winner later. Same idea, one less swear word.
What it actually does
MBQ Wedge is a numeric-range node. You set start, stop, and increment, and it turns one Queue click into N separate jobs - floor((stop - start) / increment) + 1 of them, and the node tells you the count live on its face ("will produce → 9 iterations" updates as you drag).
The neat part is how the swept value travels. Under the hood, a small JS extension intercepts the Queue button and, for every job, patches the prompt so the value ends up embedded in that PNG's ComfyUI metadata chunk. No positional guessing, no "was that the 4th or 5th image?" - the label is baked into the file. That's what the companion MBQ Viewer desktop app reads to tag every image in its filmstrip, but anything that can read ComfyUI's embedded prompt chunk sees it too.
The inputs that matter
Only four, and you really only touch three:
startandstop- the range, in whatever unit the parameter uses. CFG 4 to 8, steps 20 to 40, denoise 0.4 to 0.8, whatever.increment- the step. Minimum 0.05, so denoise sweeps get fine control.parameter_name- cosmetic-ish; it becomes the label on your output images ("steps: 6"). It auto-fills with the target input's name the moment you wire the output, so you can usually ignore it.
The outputs are int_value and float_value, and which one you use decides the widget feel. Wire int_value into a steps or width input and start/stop/increment rebuild themselves as proper integer spinners; wire float_value into CFG or denoise and they stay decimal. One catch: the two outputs are mutually exclusive. Connect one and the pack disconnects the other, so pick the type that matches the input you're sweeping.
Freeze your seed first - sweeping a random seed is sweeping noise, not your parameter. Seeds advance normally across the sweep (randomize, increment, decrement, fixed all work as configured), so every image is the same scene with one variable changed.
Installing it
Two ways, neither painful:
# ComfyUI Manager: search "MBQ Wedge" → Install → restart
# or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Beakfx/mbq
# restart ComfyUI
No dependencies, no model files, no API, no key. The pack's requirements.txt is empty - the nodes are a bit of frontend JS plus a few dozen lines of Python, and all three MBQ nodes appear under the MBQ category. The desktop viewer is separate and optional: grab the Windows exe from the Releases page, or run it from source with Python 3.11+.
Where people get burned
- Only one wedge can drive a sweep at a time. Leave two wedges wired to real parameters and MBQ refuses to guess - it warns and queues a single normal job instead. Disconnect the extras and sweeping comes back.
- A wedge only counts if its output is actually connected. A stray, unwired wedge sitting in the corner of the graph does nothing. By design, but it can confuse you when you add one "for later."
- The pack is young. It's a solo dev's project (announced on r/comfyui as a beta in mid-2026), the install base is small, and the codebase is still shaking out edge cases. It's a well-made tool - just don't expect a decade of battle-testing behind it.
If you've been burning twenty renders on "is 7.5 CFG actually better than 7.0," this is the node that answers it in one run - and labels every answer for you.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| parameter_name | STRING | connect output → | — |
| start | FLOAT | 1.0-99999–99999 | — |
| stop | FLOAT | 10.0-99999–99999 | — |
| increment | FLOAT | 1.000.001–99999 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| int_value | INT | — |
| float_value | FLOAT | — |