⬡ Polyhedron LoRA Inspector
The passive node that catches your missing trigger words
- inspector_report
Stacking fifteen LoRAs is the easy part. Remembering which of the fifteen needs its trigger word in the prompt is the part that silently ruins your run - a character LoRA whose trigger never got typed isn't just "not active", it's a concept the base model will fill in with its own idea of the subject. The Polyhedron LoRA Inspector exists to catch exactly that, and it's about as low-effort as a diagnostic node gets.
It's passive: it doesn't patch a model, it reads. You feed it the Stack's uls_config_out string and your prompt, and it hands back an inspector_report - wire that into a Show Text node and you get a list of every active LoRA's trigger words and which ones are missing from your prompt. One inspector per Stack, and if you're running the dual HIGH/LOW pattern, that means one per noise path.
How it knows the triggers
The pack's trigger-word machinery reads from three places, in priority order: a .uls-meta.json file next to your .safetensors (user-curated, created when you edit in the UI), then a plain .txt file with one trigger per line, then the safetensors header itself, falling back to the filename. There's also a "Fetch from Civitai" action that reads the sshs_model_hash from the header and pulls previews and triggers from the Civitai API (SFW-strict filtering, capped downloads). So the Inspector is only as good as your metadata - a LoRA with no .txt and no header metadata reports its filename as the trigger, which is probably wrong.
That's worth internalizing: trigger words are a metadata problem first and a node problem second. The Inspector will happily tell you your trigger is "forgotten" because the file next to the model doesn't say anything better. Fix the metadata and the report fixes itself.
The inputs
uls_config_out- the Stack's serialized config. This is what tells the Inspector which LoRAs are actually selected and at what strength.prompt- the prompt you're about to encode. This is thepositive_textoutput from the pack's CLIP Text Encode, or any text node.
Output is a single inspector_report STRING. That's it.
Installing it
It's in the Polyhedron Suite pack, so install once and everything appears:
cd ComfyUI/custom_nodes
git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
# restart ComfyUI
Or via ComfyUI Manager, search "Polyhedron Suite". No dependencies beyond what ComfyUI ships.
The honest caveat: this is a passive checker, and it checks only what you give it. Wire the Stack's uls_config_out - not a copy of the JSON you typed by hand - or the report will disagree with what the Stack is actually merging. And remember it validates against your prompt text, not the encoded tokens; if your text encoder is silently truncating the prompt at 512 tokens, the Inspector will show a clean report while WAN's UMT5-XXL never sees the last LoRA's trigger at all. That's what the pack's Token Counter is for.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| uls_config_outopt | STRING | {"rows":[]} | — |
| promptopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| inspector_report | STRING | — |