Attention Couple Region
One prompt, one mask, one region
- cond
- mask
- region
AttentionCouple is the engine, but it doesn't know what a "region" is on its own - that's what this node defines. AttentionCoupleRegion bundles exactly three things into one package: a prompt, a mask, and a strength. Plug it into AttentionCouple (directly for a two-region setup, or via AttentionCoupleRegions for three-plus) and you've got yourself a spatial slice of the image with its own dedicated conditioning.
What it actually does
Nothing fancy under the hood - it's a data-bundling node, not a compute-heavy one. It takes your region's conditioning and mask, packages them with a weight, and outputs an ATTENTION_COUPLE_REGION object that AttentionCouple later reads when it patches the model's attention. Think of it as the per-character (or per-object) building block in a regional-prompting graph, the same role Forge's Attention Couple and the older Regional Prompter extension fill with their own UIs - this is ComfyUI's version of defining "this area gets this prompt."
The three inputs, and they're all you need
cond(CONDITIONING) - this region's own prompt, run throughCLIPTextEncode(use the same CLIP model as your base prompt). Describe only what belongs in this region - the specific character's hair, outfit, pose - not the whole scene.mask(MASK) - which pixels this region owns. The usual source is a Load Image node right-clicked into "Open in Mask Editor," painted white where the subject should land; anything else that outputs a MASK (a segmentation node, a solid-color-to-mask conversion) works too. It has to match thewidth/heightyou set on theAttentionCouplenode downstream, or you'll hit a tensor mismatch.weight(default 1, range 0.01–1, step 0.01) - how hard this region's prompt fights for its pixels. There's no tooltip on this one in the schema, but the range tells the story: it's the per-region strength dial, same idea asglobal_prompt_weighton the parent node but scoped to just this region.
Output: a single region (ATTENTION_COUPLE_REGION) - wire it straight into AttentionCouple's regions input for a single extra region, or into one of the numbered slots on AttentionCoupleRegions if you're stacking more than one.
Installing it
Same pack as everything else here: search "A8R8 ComfyUI Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ramyma/A8R8_ComfyUI_nodes
Restart. No dependencies, no models to download - it's a plain Python data node.
Common issues
Weight caps out at 1.0. In the wider Attention Couple community - people running the older, DIY ComfyUI workflows this technique grew out of - the standard advice for a region that's losing out is to push its weight past 1, up toward 1.5, while pulling the dominant region down toward 0.5–0.75. This node's schema doesn't let you do that; 1.0 is the ceiling. If a region is still getting drowned out after you've maxed its weight, the fix is to lower everyone else's weight (including global_prompt_weight on the parent node), not chase a value that doesn't exist here.
Mask/resolution mismatch. Same failure mode covered on the AttentionCouple page - if your mask's pixel dimensions don't match the width/height set there, you'll get a tensor-size error. Build masks at your actual output resolution from the start.
Mismatched CLIP between base and region prompts. cond needs to come from the same CLIP model as your base_prompt's conditioning. The node has no way to catch this for you - feeding it conditioning from a different checkpoint's CLIP will run, but the results will look off in ways that are hard to diagnose back to the cause.
A region that does nothing at all. Before touching weights, check it's actually connected - an AttentionCoupleRegion node sitting unwired on the canvas, or dangling off a bundler slot with nothing downstream, just doesn't execute. ComfyUI only runs what's wired into the final chain.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| cond | CONDITIONING | — | |
| mask | MASK | — | |
| weight | FLOAT | 1.000.01–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| region | ATTENTION_COUPLE_REGION | — |