π BV LoRA Registry
Name your LoRA stacks once, switch them per region
- resource_provider
A workflow that uses ten LoRAs usually ends up with ten LoraLoader nodes and a spreadsheet to remember which is which. BV LoRA Registry is the alternative: one node, one JSON config, and it builds several named, independently switchable LoRA stacks straight from ComfyUI's local models/loras catalog. Each stack can be a different combination of LoRAs at different strengths, and each one is switchable on its own - then everything downstream references stacks by name instead of by file.
It's the gateway to Regional LoRA. The registry's output is a single BV_RUNTIME_RESOURCE_PROVIDER wire, and that wire is what BV Regional LoRA consumes when its config says "give region X the stack named hero." You register once, route many times.
How it works
You feed it one input, config_json - a JSON document describing the stacks. The shape is a bv.lora_stack_registry_config with a registry_id and an array of stacks, each with entries:
{
"schema": "bv.lora_stack_registry_config",
"version": 1,
"registry_id": "0b8a4f91-2d5e-4c6f-9a1b-3c7d8e9f0a2b",
"stacks": [
{
"id": "hero",
"name": "Hero Character",
"enabled": true,
"entries": [
{ "id": "e1", "lora_name": "my_character.safetensors", "enabled": true, "model_strength": 0.8, "clip_strength": 0.8 }
]
}
]
}
The node validates the JSON, then materializes each enabled stack by resolving every lora_name through ComfyUI's model folder system - the same lookup the standard LoraLoader uses. A LoRA that isn't in your loras folder is a hard error, not a skipped entry, which is exactly what you want: a missing file should fail loudly before you render a batch with a hole in it. Each stack becomes a named LORA_STACK (an ordered list of (name, model_strength, clip_strength) tuples - the same shape a LoraLoaderStack produces), and all of them travel out as one typed provider.
The UI around this node is where the "Full/Quick" selection flows from the pack's 1.2.0 changelog live - pick a LoRA by name, set per-entry strengths, toggle whole stacks on and off without touching the raw JSON.
The inputs and outputs that matter
config_json- the only input. Multiline JSON; the editor builds it.resource_provider- the single output. Wire it to BV Regional LoRA's provider inputs (or a regional consumer that takes runtime LoRA resources).
How to install
Ships in BV Node Pack:
cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/bv_nodepack.git
Restart ComfyUI, hard-refresh. Or ComfyUI Manager β "BV Node Pack". No downloads - this reads your existing models/loras.
Common issues
- "LoRA file not found through ComfyUI: β¦" - the
lora_nameisn't in yourlorasfolder (typo, different machine, or the file isn't.safetensors). The registry only resolves files ComfyUI can actually see. - "invalid JSON" or schema errors - missing
schema/versionfields, or a field the validator doesn't expect. Start from the skeleton above. - A stack silently applies nothing - check
enabledon the stack and the entry. An entry disabled or a stack toggled off materializes as an empty stack, by design, so you can flip things without editing JSON.
If all you ever do is one LoRA on one model, ComfyUI's built-in loader is fine and this is overhead. The moment your images have more than one character - or you want per-region styles that don't bleed - this is the node that makes it manageable.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| config_json | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| resource_provider | BV_RUNTIME_RESOURCE_PROVIDER | β |