Nodes/ComfyUiNodes/M Group Inputs
ComfyUI Node

M Group Inputs

The all-in-one control panel

By Madlumi·Created 8 months ago·Updated 8 months ago· 0
M Group Inputs
  • sampler_name
  • scheduler
  • ckpt_name
  • lora1
  • lora2
  • lora3
  • lora4
  • lora5
  • prompt
  • negative
  • seed
  • width
  • height
  • batch_size
  • steps
  • cfg
  • sampler_name
  • scheduler
  • denoise
  • ckpt_name
  • filename_prefix
  • lora1
  • lora1_strength
  • lora2
  • lora2_strength
  • lora3
  • lora3_strength
  • lora4
  • lora4_strength
  • lora5
  • lora5_strength
prompt
negative
seed0
width512
height512
batch_size1
steps25
cfg8.0
denoise1.00
filename_prefixComfyUI
lora1_strength1.00
lora2_strength1.00
lora3_strength1.00
lora4_strength1.00
lora5_strength1.00

The knobs you retune on every generation - prompt, seed, size, steps, cfg, sampler, scheduler, denoise, checkpoint, filename, and the LoRAs you keep toggling - live scattered across ten different nodes. That's a big part of why shared workflows turn into spaghetti. M Group Inputs pulls the whole control panel into one node: 23 inputs in, 23 outputs out, and changing a value in one place updates everything wired to it.

Let's be clear about what it does and doesn't do, because the name overpromises. The mechanism is pure plumbing: the node's go() method just returns all of its inputs in order, untouched. Nothing is processed, nothing is bundled. What you type or pick is what comes out on the matching wire. Its whole value is the fan-out - one authoritative source for each value instead of five widgets you have to keep in sync, which is exactly the "one source, many consumers" pattern the plumbing layer exists to serve.

The inputs you'll actually set:

  • prompt / negative - multiline text, wired into CLIP Text Encode (via the checkpoint's CLIP).
  • seed - a plain INT (0 to 2^63-1). Same seed-widget rules as everywhere else in ComfyUI, so the "control after generate" trap still applies: a randomizing seed gets overwritten after the run, so lock the ones you like.
  • width / height - 64 to 4096 in steps of 8, so they always land on the multiples-of-8 that latent generation wants. Wire into Empty Latent.
  • steps, cfg, sampler_name, scheduler, denoise - straight into KSampler.
  • ckpt_name - into a Checkpoint Loader.
  • filename_prefix - into Save Image, so your output naming lives at the top of the graph.
  • lora1 through lora5, each with a lora*_strength (-10 to 10) - and here's the trap: these only output a name and a number. This node does not load LoRAs, doesn't patch the model, nothing. You still need an actual LoRA loader downstream, wired with those values. It's a convenient place to park "which five am I using and at what strength" - not a LoRA stack.

The outputs mirror every input by name: prompt, negative, seed, width, height, batch_size, steps, cfg, sampler_name, scheduler, denoise, ckpt_name, filename_prefix, and the ten LoRA slots. Everything is one wire per value.

The honest take: this is a control panel, not a pipe. ComfyUI's plumbing layer has two philosophies - the context-bus nodes like rgthree's Context that bundle everything into one wire and unpack it downstream, and the explicit fan-out this node uses. This one is the debuggable kind: you can see exactly what feeds the sampler because every connection is a visible wire. The cost is that you don't get the spaghetti reduction a single pipe wire buys you, so it shines in medium-size workflows where you're iterating, not in 200-node monsters.

One more thing to know: the defaults are SD1.5-flavored - 512×512, cfg 8, 25 steps, denoise 1.0. If you run SDXL or Flux you'll be changing every default on first use. That's fine; the point is one place to change them.

It ships in the ComfyUiNodes pack (repo Madlumi/ComfyUiNodes, author "Madanie"). Install via ComfyUI Manager - search "ComfyUiNodes" - or:

cd ComfyUI/custom_nodes
git clone https://github.com/Madlumi/ComfyUiNodes

Then restart ComfyUI. No pip requirements or model downloads; it's plain Python on top of ComfyUI's own deps. Find it under Add Node → mnodes → util.

Categorymnodes/util

Inputs (23)

NameTypeDefaultDescription
promptSTRING
negativeSTRING
seedINT00–9223372036854776000
widthINT51264–4096
heightINT51264–4096
batch_sizeINT11–64
stepsINT251–200
cfgFLOAT8.00–30
sampler_nameSAMPLER_NAME
schedulerSCHEDULER_NAME
denoiseFLOAT1.000–1
ckpt_nameCKPT_NAME
filename_prefixSTRINGComfyUI
lora1LORA_NAME
lora1_strengthFLOAT1.00-10–10
lora2LORA_NAME
lora2_strengthFLOAT1.00-10–10
lora3LORA_NAME
lora3_strengthFLOAT1.00-10–10
lora4LORA_NAME
lora4_strengthFLOAT1.00-10–10
lora5LORA_NAME
lora5_strengthFLOAT1.00-10–10

Outputs (23)

NameTypeDescription
promptSTRING
negativeSTRING
seedINT
widthINT
heightINT
batch_sizeINT
stepsINT
cfgFLOAT
sampler_nameSAMPLER_NAME
schedulerSCHEDULER_NAME
denoiseFLOAT
ckpt_nameCKPT_NAME
filename_prefixSTRING
lora1LORA_NAME
lora1_strengthFLOAT
lora2LORA_NAME
lora2_strengthFLOAT
lora3LORA_NAME
lora3_strengthFLOAT
lora4LORA_NAME
lora4_strengthFLOAT
lora5LORA_NAME
lora5_strengthFLOAT