ComfyUI Node
RegioCraft (Regional Multi-LoRA + Ref Lock)
RegioCraft: unlimited-region character LoRA/LoKr masking, sparse-token hook, ramp/warmup scheduling, attention isolation, reference-image identity lock, and optional per-region text conditioning, all in one node.
RegioCraft (Regional Multi-LoRA + Ref Lock)
- model
- clip
- bboxes
- vae
- model
- clip
- mask_preview
- info
- conditioning
◄canvas_width1024►
◄canvas_height1024►
◄regions_json[
{"lora": "None", "strength": 1.2, "enable": true, "ref_image": "", "prompt": "", "trigger": "", "x": 0.0, "y": 0.0, "w": 0.5, "h": 1.0},
{"lora": "None", "strength": 1.2, "enable": true, "ref_image": "", "prompt": "", "trigger": "", "x": 0.5, "y": 0.0, "w": 0.5, "h": 1.0}
]►
◄base_prompt►
◄text_strength1.00►
◄auto_activate_from_promptfalse►
◄split_modemanual►
◄seam_feather0.08►
◄blend_override0.00►
◄sparse_threshold0.010►
◄steps_without_applying0►
◄lora_ramp_calls0►
◄attention_isolation0.0►
◄ref_strength0.00►
◄ref_start_percent0.00►
◄ref_end_percent0.60►
◄ref_feather0.06►
◄identity_providernone►
◄identity_ref_boost4.0►
◄base_strength1.00►
◄region_prompt_1—►
◄region_prompt_2—►
◄region_prompt_3—►
◄region_prompt_4—►
◄region_prompt_5—►
◄region_prompt_6—►
◄region_prompt_7—►
◄region_prompt_8—►
CategoryRegioCraft
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| canvas_width | INT | 102464–16384 | — |
| canvas_height | INT | 102464–16384 | — |
| regions_json | STRING | [ {"lora": "None", "strength": 1.2, "enable": true, "ref_image": "", "prompt": "", "trigger": "", "x": 0.0, "y": 0.0, "w": 0.5, "h": 1.0}, {"lora": "None", "strength": 1.2, "enable": true, "ref_image": "", "prompt": "", "trigger": "", "x": 0.5, "y": 0.0, "w": 0.5, "h": 1.0} ] | JSON array, in box order: {"lora":"file.safetensors", "strength":1.2, "enable":true, "ref_image":"uploaded.png", "prompt":"optional per-region text"}. Unlimited rows. LoRA and LoKr files both work. |
| base_prompt | STRING | Overall scene prompt (composition, setting, lighting). Combined with each region's own text (if any) for that region's masked conditioning. Also scanned for trigger names if auto_activate_from_prompt is on. | |
| text_strength | FLOAT | 1.000–2 | Blend strength of each region's masked text conditioning. |
| auto_activate_from_prompt | BOOLEAN | false | If a region has a 'trigger' name set, that region is only active when its trigger word appears (case-insensitive) in base_prompt -- the region's own enable toggle is ignored in that case. Regions with no trigger set keep using their enable toggle as normal (handy for LoRAs that don't need a trigger word to activate). |
| split_mode | COMBO | manual | 4 options: manual, bbox, auto_vertical, auto_horizontal |
| seam_feather | FLOAT | 0.080–0.5 | — |
| blend_override | FLOAT | 0.000–1 | — |
| sparse_threshold | FLOAT | 0.0100–0.2 | Skip LoRA/LoKr compute on tokens below this mask value. 0=safest/slowest. |
| steps_without_applying | INT | 00–64 | Let the base model establish composition for N model calls first. |
| lora_ramp_calls | INT | 00–64 | 0=off. 1=50->100%, 2=33->66->100%, relative to selected strength. |
| attention_isolation | FLOAT | 0.00–12 | 0=off. >0 dampens cross-region attention (not just the LoRA delta). Try 4-8. |
| ref_strength | FLOAT | 0.000–1 | Per-step pull toward each region's reference image. 0=off. |
| ref_start_percent | FLOAT | 0.000–1 | — |
| ref_end_percent | FLOAT | 0.600–1 | — |
| ref_feather | FLOAT | 0.060–0.5 | — |
| identity_provider | COMBO | none | Phase 3 (2026-08-02): 'none' = old behavior, unchanged. 'krea2edit' runs the FULL diffusion forward through comfyui-krea2edit's trained identity-preservation path (replaces this node's normal forward ONCE per model call, never once per region) for any active region that has a ref_image set. Region-LoRA hooks and attention isolation stay active around that call -- RegioCraft remains the sole owner of the model wrapper. Capped at 2 simultaneous refs (that LoRA's trained limit); extra ref_image regions beyond that are logged and ignored, not an error. Requires the comfyui-krea2edit custom node + its LoRA installed, and a 'vae' connected to this node. EDIT INSTRUCTIONS (2026-08-18): if a region also has its own 'prompt' text filled in alongside ref_image, that text is grounded on the ref image (Qwen3-VL, training-matched template) and used as an actual edit instruction, e.g. 'give him a hooked nose' -- no extra toggle needed, ref_image+prompt together IS the signal. Regions with only ref_image (no prompt) keep doing pure identity/face-lock as before. Only ONE combined instruction applies per model call -- if several regions have both ref_image and prompt at once, their texts are concatenated into a single instruction, not applied separately per region. |
| identity_ref_boost | FLOAT | 4.00–1000 | Reference-fidelity dial passed to the identity provider (Krea2Edit's ref_boost). Ignored if identity_provider='none'. 1.0=off, ~4.0=strong likeness (provider's own recommended default), >10=over-copy risk. |
| bboxesopt | BOUNDING_BOX | — | |
| vaeopt | VAE | Required to enable reference-image regions. | |
| base_strengthopt | FLOAT | 1.00-10–10 | — |
| region_prompt_1opt | STRING | Connect an external text node here to drive region 1's prompt dynamically (e.g. a wildcard/random prompt generator). Overrides whatever's typed into region 1's own prompt field when connected. | |
| region_prompt_2opt | STRING | — | |
| region_prompt_3opt | STRING | — | |
| region_prompt_4opt | STRING | — | |
| region_prompt_5opt | STRING | — | |
| region_prompt_6opt | STRING | — | |
| region_prompt_7opt | STRING | — | |
| region_prompt_8opt | STRING | Region 9+ have no dedicated input socket (fixed cap of 8) -- type their prompts directly into each region's own prompt field. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| mask_preview | IMAGE | — |
| info | STRING | — |
| conditioning | CONDITIONING | — |