BMAB ControlNet
Structural conditioning inside BMAB's own pipeline
- bind
- image_in
- BMAB bind
ControlNet needs no introduction if you've done any real compositional work in Stable Diffusion - it's the technique that lets you lock down where things go in an image (via an edge map, depth map, or pose skeleton) while your prompt still decides what they are. What this node adds is a BMAB-flavored wrapper around that idea, so it can plug straight into a BMAB bind pipeline instead of wiring a separate ControlNet loader and apply node into your graph by hand.
What it is and why you'd reach for it
If you're already building a workflow out of BMAB Context → BMAB Model To Bind → BMAB Conditioning To Bind, this node lets you add spatial conditioning into that same chain without stepping outside BMAB's node family. It applies a ControlNet checkpoint of your choosing to the bind, at a given strength and step range, then hands the enriched bind onward to whatever samples next (typically BMAB KSampler Hires. Fix With Upscaler).
Worth knowing going in: this is a general ControlNet node, meaning you need a compatible ControlNet checkpoint already sitting in your models folder for whichever base model you're running (SD1.5, SDXL, or a newer union model) - it doesn't ship one. For two of the most common condition types, BMAB has purpose-built companion nodes instead: BMAB ControlNet Openpose (which needs comfyui_controlnet_aux installed) and BMAB ControlNet IPAdapter (which needs ComfyUI_IPAdapter_plus).
How it works
Same mechanism as ControlNet everywhere: it conditions generation on spatial structure - edges, depth, pose, whatever your chosen checkpoint was trained on - rather than semantic content. The strength, start_percent, and end_percent inputs are the standard controls for how much influence the condition has and during which portion of the sampling process it applies. Ending control partway through the sample (rather than holding it for every step) is the standard trick for letting the model add its own detail once composition has settled - the community default is releasing control around the halfway point for structure-heavy work.
Inputs and outputs
- bind (required) - the BMAB bind to apply ControlNet conditioning to.
- control_net_name (required, dropdown) - pick from the ControlNet checkpoints in your models folder. If this dropdown is empty, you haven't installed a ControlNet model yet - see below.
- strength (default 1, range 0–10) - how strongly the condition steers generation. On modern union checkpoints (SDXL, Flux, Z-Image), the published defaults tend to sit lower than the old SD1.5-era default of 1.0 - check your specific checkpoint's card rather than assuming 1.0 is correct.
- start_percent / end_percent (0–1 each) - when during sampling the condition is active.
- image (required, dropdown) - a file-picker widget for a reference image already in your input folder.
- image_in (optional, IMAGE) - wire in an image directly from elsewhere in your graph instead.
Output is a single BMAB bind, chained forward with ControlNet now baked in.
Installing it
Through ComfyUI Manager: search comfyui_bmab, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/portu-sim/comfyui_bmab.git
cd comfyui_bmab
pip install -r requirements.txt
You'll also need an actual ControlNet checkpoint for your base model, downloaded into ComfyUI's models/controlnet folder - this node applies one, it doesn't include one. This particular node doesn't require comfyui_controlnet_aux or ComfyUI_IPAdapter_plus; those matter for BMAB's pose- and IPAdapter-specific nodes instead.
Common issues
- Empty
control_net_namedropdown. This means ComfyUI found no ControlNet checkpoints - double-check your model is actually inmodels/controlnetand matches the architecture you're generating on (an SDXL ControlNet won't load correctly against a Flux checkpoint, and so on). - Strength set to an SD1.5-era default on a newer union model. If your conditioned output looks overcooked or ignores your prompt entirely, try dropping strength toward the 0.65–0.9 range that most 2025–26 union checkpoints publish, rather than leaving it at the node's default of 1.
- Holding control for the full sample. If your output looks stiff or overly literal, try ending control around 0.5 instead of 1.0, so the later denoising steps are free to add detail the model wouldn't otherwise produce.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| bind | BMAB bind | — | |
| control_net_name | COMBO | 0 options: | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
| image | COMBO | 2 options: None, example.png | |
| image_inopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BMAB bind | BMAB bind | — |