KSampler_motorway_edition
Your KSampler, but it lives inside a Motorway pipe
- MOTORWAY ππ¨
- MOTORWAY ππ¨
KSampler_motorway_edition is the plainest possible example of what this pack actually is: ComfyUI's stock KSampler, cloned and wrapped so it pulls its model and conditioning out of a "Motorway" pipe by key name, runs the exact same sampling code, and stuffs the result back into the pipe. No new sampler, no new math - same euler, same dpmpp_2m, same everything you already know. What changes is how data gets to it and leaves it.
Why you'd reach for it
If you've built a workflow where every node's outputs get routed into a shared pipe - seed, model, positive, negative, latent all stored under named keys - then a normal KSampler is awkward to slot in, because it wants four fat cables on the left. This node takes those four inputs as little text fields instead. You set INPUT_model_key to "model", INPUT_positive_key to "positive", and so on, and it reads whatever is currently sitting under those keys in the motorway. The widget row below stays a normal widget row: seed, steps, cfg, sampler, scheduler, denoise. Only the cable-connected inputs get turned into keys; the knobs you tweak all the time stay knobs.
That's the whole trick of the "motorway_edition" family, and it's why the author's readme calls the pack "my implementation of a pipe." The MOTORWAY ππ¨ object - a bag of values hashed by key - gets passed node to node, and each motorway-ed node is a drop-in stand-in for the core node you already know.
What you actually set
The four key fields are the ones a beginner gets wrong:
INPUT_model_key(default"model") - the motorway key holding yourMODEL.INPUT_positive_key/INPUT_negative_key(defaults"positive"/"negative") - where your conditioning lives.INPUT_latent_image_key(default"latent_image") - where the starting latent is.OUTPUT_LATENT_key(default"LATENT") - which key the finished latent is stored under.
Every key must match what a Motorway ramp node wrote earlier in the pipe, character for character. The widgets - seed, steps, cfg, sampler_name, scheduler, denoise - are the stock KSampler controls with the stock tooltips, so nothing new to learn there. The only output is the MOTORWAY ππ¨ itself; to preview or save the image you read the LATENT key back out with a Motorway AxB ramp and feed a normal VAEDecode β SaveImage. This node can't hand you a latent directly, by design.
Installing it
Clone into custom_nodes and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
You can also find it in ComfyUI Manager (search "motorway" or "agilly1989"). No requirements.txt, no model downloads, no extra pip packages - it's plain Python against ComfyUI's own node API.
The honest troubleshooting
This pack is self-described beta: the readme opens with "IF THINGS BREAK ITS BECAUSE I BROKE IT" and the author is reachable on the Comfy Org discord as @agilly1989. Two gotchas bite specifically here. First, the repo is mid-refactor - the current HEAD is a hotfix that comments out the generated node registration entirely, so on a fresh install the _motorway_edition nodes may not appear at all. If you cloned it and KSampler doesn't show, that's the pack being broken, not your install. Second, the classic motorway error is 'MotorwayClass' object has no attribute 'hash_', which means a key you typed was never written into the pipe - a typo, a case mismatch, or a node upstream that never ran. Double-check your key strings against the ramps that wrote them.
Otherwise, treat this as KSampler with a commute. Same sampler you'd pick for the same model - the KB's boring-but-reliable advice still holds: for SD 1.5/SDXL, DPM++ 2M with Karras when in doubt, converging samplers for reproducibility, ancestral ones when you want more variety. The motorway just changes the plumbing, not the recipe.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β | |
| INPUT_model_key | STRING | model | β |
| INPUT_positive_key | STRING | positive | β |
| INPUT_negative_key | STRING | negative | β |
| INPUT_latent_image_key | STRING | latent_image | β |
| seed | INT | 00β18446744073709550000 | The random seed used for creating the noise. |
| steps | INT | 201β10000 | The number of steps used in the denoising process. |
| cfg | FLOAT | 8.00β100 | The Classifier-Free Guidance scale balances creativity and adherence to the prompt. Higher values result in images more closely matching the prompt however too high values will negatively impact quality. |
| sampler_name | COMBO | The algorithm used when sampling, this can affect the quality, speed, and style of the generated output. | |
| scheduler | COMBO | The scheduler controls how noise is gradually removed to form the image. | |
| denoise | FLOAT | 1.000β1 | The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
| OUTPUT_LATENT_key | STRING | LATENT | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |