Fantastic Lora Mimic Subgraph Companion ๐งฉ
The sniffer that lets a Mimic see LoRA loaders buried in a subgraph
- lora_stack
- lora_stack
The Fantastic Lora Mimic's picker reads nodes in its own graph scope - which means it can't see a LoRA loader tucked inside a subgraph, because that loader lives in the subgraph's own nested graph. The Mimic Subgraph Companion is the bridge: place it in the same scope as a group of loaders, and it scans every compatible one, combines their enabled LoRAs, and emits them as a single LORA_STACK. Because LORA_STACK wires pass cleanly through subgraph input/output slots, that stack reaches a Mimic on the other side of the boundary. The README calls it "the sniffer," and that's exactly what it is.
When you'd use it
Two arrangements, depending on which side of the subgraph the Mimic sits on:
- Sources buried, Mimic outside - put the sniffer inside the subgraph with the loaders, wire its
lora_stackout through a subgraph output to the Mimic'slora_stackinput. - Mimic buried, sources outside - put the sniffer outside with the sources, wire its stack into a subgraph input, and on to the Mimic inside.
Either way the sniffer is just an aggregator: the frontend scans the compatible loaders in its own scope - the pack's own nodes, stock, pysssss, rgthree, Efficiency/Comfyroll - combines their enabled LoRAs, and bakes them into a hidden lora_data widget that the Python side turns into the stack at execution. It's the same graph-introspection machinery the Mimic uses, wrapped into a standalone node that lives next to the sources.
Inputs, outputs
The required input is the hidden lora_data blob (UI-managed - the node's face shows a live readout of what it's forwarding instead). The optional lora_stack input is a passthrough that gets merged in first, so sniffers can be chained or fed an existing stack. The single output, lora_stack (type LORA_STACK), is what crosses the subgraph boundary.
The fine print
Two limitations are worth internalizing before you build around this. First, the Mimic applies a wired stack flat - it has no per-source grouping and its High/Low companion UI doesn't apply to sniffer-forwarded LoRAs. If you need those features, keep the Mimic in the same scope as the sources and use its picker directly. Second, it's a proof-of-concept, same as the Mimic: it reads configured widget values through informal frontend internals, so it's defensive but not guaranteed-stable across ComfyUI updates. Verify what it forwarded before trusting a long run.
Also note the redundancy: a cooperating source that already outputs a LORA_STACK - the pack's own loader, ecosystem stackers - doesn't need the sniffer at all. Wire its stack through the boundary directly. The sniffer exists for the sources that don't expose one, which is most of the reason you'd be in this situation.
Install
Same pack, same recipe:
cd ComfyUI/custom_nodes
git clone https://github.com/Adudeguyman/comfyui_fantastic-loras
or ComfyUI Manager โ search Fantastic Loras, then restart and hard-refresh. No dependencies.
Common issues
If nothing comes out of the sniffer, the sources aren't a supported family - check the live readout, and if it's empty, the loaders you're scanning don't have an adapter. If the Mimic on the other side of the boundary isn't picking up the stack, double-check you wired through a subgraph input/output slot rather than just placing both nodes visually inside the group - subgraph boundaries are actual graph scopes, and a visual group isn't one. And the standard experimental-node advice: a hard refresh is step one, and if a ComfyUI update breaks it, this is likely the first node to feel it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_data | STRING | {} | Managed by the Fantastic Lora Loader UI. |
| lora_stackopt | LORA_STACK | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lora_stack | LORA_STACK | โ |