Allma Bus In
How Allma Bus In tames a spaghetti graph
- slots
- bus
ComfyUI workflows have a way of becoming noodles. Twelve values - model, clip, vae, conditioning, latent, seed - each dragged as its own wire across a graph that grew three screens wide, and suddenly you can't tell what feeds what. The bus is the answer: bundle everything onto one line, unpack it where you need it. Allma Bus In is the collecting end of that trick, and it has one feature the anonymous buses don't: every slot has a name, and the name travels with it.
What it actually does
You plug anything into a slot - image, model, string, latent, whatever - and a new slot appears as you fill the last one. Everything rides out on a single bus wire to Allma Bus Out, which gives it all back in the same order under the same names. No type checking to fight, no adapter nodes. The one thing to know is the 24-slot cap: the node declares 24 slots and hides the ones you haven't filled.
The part worth caring about is how the names work. Python carries the values, in slot order, and nothing else. The names live in the browser - mirrored from the sending node to the receiving one. That split is what makes the bus keep working when you drive ComfyUI from an API prompt, where no frontend ever existed to name anything. It also means the names are free: renaming a slot is cosmetic, so it's not something a generation can ever depend on. There's no "renamed slot broke my workflow" failure mode, because the payload never carried the name in the first place.
The inputs that matter
slots- the autogrow input. Plug anything into a slot; a new one appears as the last fills.name_1…name_24- slot labels. Blank takes the name of whatever you plugged in. You rename in the Parameters panel or via the▸ slot namesaccordion on the node, and the new label shows up on the receiving node as you type.
Output: one bus wire of type ALLMA_BUS, straight into Allma Bus Out.
One gotcha that will trip you up on the newer frontend: collapsed, the name boxes vanish from the node and from the Parameters panel. That's not a bug - Nodes 2.0 draws widgets from one live list, and the panel reads the same list, so there's no "in the panel but off the node" state to offer. Expand the node to rename.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/OliveiraNickolas/AllmaNodes
Then restart ComfyUI. No pip install - the pack is stdlib plus torch/PIL, which you already have. ComfyUI Manager also finds it if you search for "AllmaNodes". This is a graph utility: it doesn't need the Allma backend, or any backend, to run.
A note on the honest tradeoff
Buses buy legibility and sell a little transparency. The community has been here before - the "Please Stop using the Anything Anywhere extension" backlash was exactly about wire-hiding convenience making graphs impossible to debug. A bus with named slots is a lot less opaque than a generic Any pipe (compare Comfyroll's bus, which works but gives you anonymous wires you can't rename), but if you're actively iterating on a small region, keep the values on explicit wires where you can see what feeds what. Reach for the bus when the wire count is the actual problem.
Also worth knowing: this pack is brand new and has zero community footprint yet - no reddit threads, no battle-tested workflows to crib from. The mechanism is simple enough that it'll do what it says; just don't expect a trail of other people's success stories.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| slots | COMFY_AUTOGROW_V3 | — | |
| name_1opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_2opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_3opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_4opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_5opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_6opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_7opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_8opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_9opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_10opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_11opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_12opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_13opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_14opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_15opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_16opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_17opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_18opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_19opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_20opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_21opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_22opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_23opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. | |
| name_24opt | STRING | Label for this slot. Blank takes the name of whatever is plugged in. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| bus | ALLMA_BUS | — |