LoraWithMeta
Three LoRAs, split strengths, and the .tpNN trigger convention nobody documented
- model
- clip
- MODEL
- CLIP
- TRIGGERS
LoraWithMeta is the fiddliest member of the ComfyKit LoRA family, and it's also deprecated - the source is stamped "deprecated 2024-08-22 / do not use anymore." It stayed registered for the same reason LoraThree did: the author didn't want old workflows to die. So this page exists for the same two audiences: people who found it in a legacy workflow and want it to keep running, and the curious who noticed a .tpNN.txt file in a CivitAI download and wondered what on earth that naming was about. It's the answer.
What it does
A three-slot LoRA stack that gives you separate model and clip strengths per LoRA - the same split-strength control as LoraThree, but its trigger system works differently (and arguably worse). You select the LoRA, set loraX_tgr_preset to an integer, and the node hunts for a specifically-named file next to the weights.
How it works
For each slot you get five inputs: the LoRA dropdown, an integer trigger preset (lora1_tgr_preset, default 0, range 0–99), a model strength (lora1_str_model), and a clip strength (lora1_str_clip). Applying a LoRA is the standard comfy.sd.load_lora_for_models call with those two strengths kept independent.
The trigger mechanism is where the naming convention lives. The node takes your LoRA filename, swaps the extension, and inserts the preset number zero-padded to two digits: charmodel.safetensors with preset 3 becomes charmodel.tp03.txt. It then reads that file's first line as the trigger. Set the preset to 0 (or below) and trigger reading is skipped entirely. The scheme lets one LoRA ship multiple trigger variants - .tp01.txt, .tp02.txt - and you pick a number. If the file doesn't exist, it logs Preset Not Found and carries on.
So if you've ever unzipped a LoRA and found a .tpNN.txt sitting next to the .safetensors, this is the loader that convention came from. LoraThree's preset dropdown and LoRA S5's plain .txt sibling are both descendants of this idea.
Inputs and outputs
- model, clip - base pipeline.
- lora1 / lora2 / lora3 - LoRA dropdowns.
- lora1_tgr_preset … lora3_tgr_preset - the trigger variant number, 0–99.
- lora1_str_model … lora3_str_model and lora1_str_clip … lora3_str_clip - independent strengths, default 1.0.
- Outputs MODEL, CLIP, TRIGGERS (the joined first lines of the matched
.tpNN.txtfiles).
Installing it
It's part of ComfyKit Custom Nodes (bobmagicii/comfykit-custom-nodes). Easiest is ComfyUI Manager - search "ComfyKit Custom Nodes". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/bobmagicii/comfykit-custom-nodes
Restart, and you're done - no requirements.txt, no model files, no pip installs. The whole pack is plain Python over ComfyUI's core modules.
What to watch for
The IS_CHANGED constant means it always re-runs on queue, so no node caching - same quirk as its siblings. If a trigger file is missing it just skips silently (well, with a console log). And the usual LoRA physics apply: missing triggers, 1.0-plus strengths, and architecture mismatches are the top reasons a stack looks dead. Since this node is retired, treat it as "make it run," not "make it better" - the maintained path forward is LoRA S5.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora1 | COMBO | 1 options: None | |
| lora1_tgr_preset | INT | 00–99 | — |
| lora1_str_model | FLOAT | 1.0-16–16 | — |
| lora1_str_clip | FLOAT | 1.0-16–16 | — |
| lora2 | COMBO | 1 options: None | |
| lora2_tgr_preset | INT | 00–99 | — |
| lora2_str_model | FLOAT | 1.0-16–16 | — |
| lora2_str_clip | FLOAT | 1.0-16–16 | — |
| lora3 | COMBO | 1 options: None | |
| lora3_tgr_preset | INT | 00–99 | — |
| lora3_str_model | FLOAT | 1.0-16–16 | — |
| lora3_str_clip | FLOAT | 1.0-16–16 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| TRIGGERS | STRING | — |