ModelMergeAuraflow_motorway_edition
The DiT that brought flow matching to open weights
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
AuraFlow was the first serious open-weights flow-matching DiT - the architecture family that Flux later made famous - and its block layout is completely unlike a U-Net. There's no encoder/decoder split; there are stacked transformer blocks, a dual-stream "double" section up front and a single-stream tail, plus embedders. ModelMergeAuraflow is ComfyUI's per-block merge for exactly that layout, and this is its Motorway-ed clone.
How the blocks map
The node exposes a ratio per named region, all defaulting to 1.0:
init_x_linear,positional_encoding,cond_seq_linear,register_tokens,t_embedder- the input embedders and conditioning wiring.double_layers.0–double_layers.3- the early dual-stream blocks, where text and image tokens attend to each other separately before merging.single_layers.0–single_layers.31- the long single-stream tail, the bulk of the model and where most of the texture lives.modFandfinal_linear- the output projection.
The same merge-node gotcha applies and is worth stating again: all ratios default to 1.0, so an untouched node returns model2. Set a base blend first, then push individual regions. With DiT merges, the interesting split is usually double layers (conditioning/structure) versus single layers (finish).
One thing to know before you invest time here: AuraFlow's checkpoint ecosystem was a flash in the pan - the model was important as a proof that open flow-matching worked, but most people moved to Flux-class models for merging. This node is here because ComfyUI supports the architecture, not because it's the merge everyone's doing. If you're actually working with AuraFlow checkpoints, it's your tool; otherwise you're learning the layout for its own sake.
The inputs
INPUT_model1_key(defaultmodel1) andINPUT_model2_key(defaultmodel2) - the two AuraFlow models.- The block ratios above, each 0.0–1.0, step 0.01, default 1.0.
OUTPUT_MODEL_key(defaultMODEL) - where the merged model lands.
The wrapper keeps every ratio as a widget, turns the two models into key strings, and keyed-writes the result. Runtime behavior matches stock ModelMergeAuraflow.
Install
One install for the whole pack. ComfyUI Manager, search "ComfyUI_agilly1989_motorway", or:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart ComfyUI. No requirements.txt, no model downloads.
Troubleshooting
- Result is pure model2? Every ratio defaults to 1.0 - set a base blend first.
- Only merge AuraFlow with AuraFlow (and matching sizes). The double/single layer counts differ across model families; Flux has 19 double + 38 single, so the numbers won't line up.
'MotorwayClass' object has no attribute 'hash_'= a model key isn't in the Motorway; check the loaders ran and the key spelling matches (case-sensitive).- Pack caveats: BETA, and the newest published version (1.1.7) disabled clone generation, so on a fresh install these
_motorway_editionnodes may be missing from the menu. They're present in the 1.1.0–1.1.6 builds comfy.icu indexed.
Inputs (47)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — | |
| INPUT_model1_key | STRING | model1 | — |
| INPUT_model2_key | STRING | model2 | — |
| init_x_linear. | FLOAT | 1.000–1 | — |
| positional_encoding | FLOAT | 1.000–1 | — |
| cond_seq_linear. | FLOAT | 1.000–1 | — |
| register_tokens | FLOAT | 1.000–1 | — |
| t_embedder. | FLOAT | 1.000–1 | — |
| double_layers.0. | FLOAT | 1.000–1 | — |
| double_layers.1. | FLOAT | 1.000–1 | — |
| double_layers.2. | FLOAT | 1.000–1 | — |
| double_layers.3. | FLOAT | 1.000–1 | — |
| single_layers.0. | FLOAT | 1.000–1 | — |
| single_layers.1. | FLOAT | 1.000–1 | — |
| single_layers.2. | FLOAT | 1.000–1 | — |
| single_layers.3. | FLOAT | 1.000–1 | — |
| single_layers.4. | FLOAT | 1.000–1 | — |
| single_layers.5. | FLOAT | 1.000–1 | — |
| single_layers.6. | FLOAT | 1.000–1 | — |
| single_layers.7. | FLOAT | 1.000–1 | — |
| single_layers.8. | FLOAT | 1.000–1 | — |
| single_layers.9. | FLOAT | 1.000–1 | — |
| single_layers.10. | FLOAT | 1.000–1 | — |
| single_layers.11. | FLOAT | 1.000–1 | — |
| single_layers.12. | FLOAT | 1.000–1 | — |
| single_layers.13. | FLOAT | 1.000–1 | — |
| single_layers.14. | FLOAT | 1.000–1 | — |
| single_layers.15. | FLOAT | 1.000–1 | — |
| single_layers.16. | FLOAT | 1.000–1 | — |
| single_layers.17. | FLOAT | 1.000–1 | — |
| single_layers.18. | FLOAT | 1.000–1 | — |
| single_layers.19. | FLOAT | 1.000–1 | — |
| single_layers.20. | FLOAT | 1.000–1 | — |
| single_layers.21. | FLOAT | 1.000–1 | — |
| single_layers.22. | FLOAT | 1.000–1 | — |
| single_layers.23. | FLOAT | 1.000–1 | — |
| single_layers.24. | FLOAT | 1.000–1 | — |
| single_layers.25. | FLOAT | 1.000–1 | — |
| single_layers.26. | FLOAT | 1.000–1 | — |
| single_layers.27. | FLOAT | 1.000–1 | — |
| single_layers.28. | FLOAT | 1.000–1 | — |
| single_layers.29. | FLOAT | 1.000–1 | — |
| single_layers.30. | FLOAT | 1.000–1 | — |
| single_layers.31. | FLOAT | 1.000–1 | — |
| modF. | FLOAT | 1.000–1 | — |
| final_linear. | FLOAT | 1.000–1 | — |
| OUTPUT_MODEL_key | STRING | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |