DiffControlNetLoader_motorway_edition
Load a ControlNet as a model diff, into the Motorway
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
Most ControlNet loaders just read the file. DiffControlNetLoader does something sneakier: it loads a ControlNet as a diff against a specific diffusion model. Give it the model and a control_net_name, and instead of handing back a standalone CONTROL_NET, it computes the ControlNet's weights as a patch derived from that model - which is how some ControlNet formats are stored and applied. The _motorway_edition version does all of that from the Motorway bus.
Why it exists
ControlNet files come in two flavors. The usual one (handled by ControlNetLoader) contains full weights you just load. The diff flavor assumes you already have the base model in memory and only stores the difference - load it against the wrong model and you get garbage, or a crash. DiffControlNetLoader exists for that second format: it takes the model explicitly so the diff has something to diff against. In the Motorway world that means your base MODEL has to be parked in the bus first, and the loaded CONTROL_NET gets parked under your output key.
Inputs and outputs
- MOTORWAY 🚌💨 - the bus, required.
- INPUT_model_key - key of the base MODEL the diff is computed against, default
model. - control_net_name - the dropdown of files in
ComfyUI/models/controlnet. A widget, set directly on the node. - OUTPUT_CONTROL_NET_key - where the resulting CONTROL_NET goes, default
CONTROL_NET.
Output: the Motorway. Later ControlNetApply*_motorway_edition nodes read the control net back out by key.
Installing
Same pack install as every node here:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart, or ComfyUI Manager → "ComfyUI_agilly1989_motorway". No pip deps; you provide the model files.
Caveats and the one trap
Pack-wide notes: active beta, "BIG BROKEN WITH ASYNC" README banner, _motorway_edition clones commented out of __init__.py in the version I checked (re-enable ClonedNodeMapping if missing), keys are exact and case-sensitive (hash_ error = key not in bus).
The real trap is using this loader for a ControlNet that isn't a diff - you'll either get an error or a silently wrong result. If a plain ControlNetLoader works for your file, it's not a diff, and this node was never the right call. When you genuinely have diff-format weights (they show up in some older SD1.5/SDXL releases), this is the loader that makes them behave - just make sure the model key you feed it matches the base the diff was trained against.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — | |
| INPUT_model_key | STRING | model | — |
| control_net_name | COMBO | 0 options: | |
| OUTPUT_CONTROL_NET_key | STRING | CONTROL_NET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |