BMAB Integrator
Model, clip, prompt, CLIP skip and prompt-weighting dialect, all in one node
- model
- clip
- vae
- context
- seed_in
- latent
- image
- BMAB bind
This is the front door for a BMAB pipeline on SD 1.5 or SDXL - the node that everything else in the pack depends on existing somewhere upstream. Every BMAB sampler and detailer node (KSampler, Face Detailer, Person Detailer, Zoom Out, Square, and the rest) works off a single bind wire instead of separate model/clip/vae/seed connections at each step, and this is where that bind gets created. Hand it your model, clip, vae, and prompt, and it hands back one bundle that flows through the entire rest of your graph.
What sets it apart from BMAB Flux Integrator
BMAB ships two Integrators, and the difference between them is a genuinely useful map of what changed between SD1.5/SDXL and Flux. This node - the SD1.5/SDXL one - carries three fields the Flux Integrator doesn't have at all:
stop_at_clip_layer(-24 to -1, default -2) - this is CLIP skip, under its ComfyUI-native name. Default -2 matches the community convention for anime-family SDXL checkpoints (Illustrious, Pony, NoobAI). Worth knowing: SDXL's own text encoders already condition on the penultimate CLIP layer by default before this field does anything, so -2 here is largely "don't accidentally set it to -1," not a strong quality dial the way it can be on SD 1.5.token_normalization(none/mean/length/length+mean) - how token-level prompt weights get rebalanced across the sequence when you use weighted prompt syntax.weight_interpretation(original/sdxl/comfy/A1111/compel/comfy++/down_weight) - which prompt-weighting dialect BMAB parses your prompt with. If you're used to A1111-style(word:1.3)emphasis syntax and your weighting isn't behaving how you expect in ComfyUI, this is very likely the field to check - different dialects interpret the same bracket syntax with different math underneath.
There's also a negative_prompt field here, which the Flux Integrator lacks entirely - negative prompts are a meaningful lever on SD1.5/SDXL's classifier-free guidance in a way they generally aren't on Flux's guidance-distilled sampling.
The rest of the required inputs
model, clip, vae are your checkpoint's three components from whatever loader feeds them upstream. context is a required input of BMAB's own CONTEXT type - the README doesn't spell out its producer, so confirm something in your graph actually emits one before wiring this node; it isn't optional. prompt and negative_prompt are your two text fields.
The optional inputs
seed_in (a SEED-typed input - pairs with BMAB Seed Generator if you want one seed governing your whole pipeline), latent (start from an existing latent instead of an internally-generated one), and image (seed the pipeline with an existing image for img2img-style work). Output is a single bind.
Installing it
ComfyUI Manager: search comfyui_bmab, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/portu-sim/comfyui_bmab.git
cd comfyui_bmab
pip install -r requirements.txt
plus comfyui_controlnet_aux and ComfyUI_IPAdapter_plus, the two companion packs the README lists as needed for the pack overall.
Where people get stuck
Same trap as its Flux sibling: everything downstream needs the bind this node produces, so if you're used to wiring model/clip/vae into each node individually, expect to rethink that here - one Integrator, one bind, threaded everywhere. The weight_interpretation field is the other genuine landmine: if you copy a prompt with A1111-style emphasis weights from somewhere else and the emphasis looks wrong or absent, check this field is actually set to match the syntax you're using rather than assuming it's universal.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| context | CONTEXT | — | |
| stop_at_clip_layer | INT | -2-24–-1 | — |
| token_normalization | COMBO | 4 options: none, mean, length, length+mean | |
| weight_interpretation | COMBO | 7 options: original, sdxl, comfy, A1111, compel, comfy++, +1 | |
| prompt | STRING | — | |
| negative_prompt | STRING | — | |
| seed_inopt | SEED | — | |
| latentopt | LATENT | — | |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BMAB bind | BMAB bind | — |