Omni Node Manual
Paste a node's source code and get a working node
- output_1
- output_2
- output_3
- output_4
- output_5
- output_6
- output_7
- output_8
- output_9
- output_10
- output_11
- output_12
- output_13
- output_14
- output_15
- output_16
- output_17
- output_18
- output_19
- output_20
- output_21
- output_22
- output_23
- output_24
This one sounds like a scam and isn't. The Omni Node (display name "Omni Node Manual") lets you paste the body of a ComfyUI node class into a text widget, press Update, and watch the node rebuild its own inputs and outputs to mirror that source - then execute it at runtime, no restart, no install. You have a repo of custom nodes you don't want to install? A node that only exists in a GitHub gist? A one-off utility you wrote and don't want to babysit as a package? Paste the class in and it just runs.
It's the flagship of nova452's Rebalance Pack - the pack that shipped the Krea 2 conditioning-rebalance node on day one - and it's the most genuinely weird idea in it. Rather than install another pack, you install one node that is whichever node you want it to be.
How it works
The code widget takes a standard ComfyUI node class definition: INPUT_TYPES, RETURN_TYPES, RETURN_NAMES, FUNCTION, CATEGORY, and the method that does the work. On Update (there's a button wired in by the pack's frontend), the node parses the pasted source - it reads the class attributes with an AST walk, so it doesn't need to execute anything to learn the shape - and rebuilds its inputs and outputs to match. At execution time it compiles and runs the class in a sandboxed-ish namespace, forwards whatever your graph has connected into the declared inputs, calls the function, and routes the result out through its 24 wildcard outputs (output_1 through output_24).
Practical details that make it usable: imports work, so import torch and from PIL import Image in the pasted source are fine. INT/FLOAT/BOOLEAN/STRING become widgets; IMAGE/MASK/MODEL-type inputs become connection slots; combo lists become dropdowns. The 24-output ceiling is generous - almost no single node needs more. There's also an advanced omni_spec input, a plain-text JSON/string form of the schema you can use instead of relying on the parser.
The parser's rules are worth knowing before you paste: it grabs the first class in the file that has an INPUT_TYPES, reads RETURN_TYPES (padding or truncating your result to match), and only forwards inputs that are actually declared in the class. If the source has a syntax error, you get the error in a runtime message rather than a silent failure.
The inputs and outputs that matter
- code - the pasted node class. This is the whole node.
- omni_spec (optional, advanced) - a schema string as an alternative to parsing.
- output_1 … output_24 - wildcard outputs; connect what you need.
Install
It ships in the Rebalance Pack. ComfyUI Manager: search "ComfyUI-Conditioning-Rebalance" (or "Rebalance Pack"). Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/nova452/ComfyUI-ConditioningKrea2Rebalance
Restart after cloning so the frontend extension (the Update button) registers. No models, no pip deps for the manual mode.
Troubleshooting
Most failures come from pasting a node that leans on imports you haven't installed - the node can't conjure a dependency that isn't in your environment. Paste a class that imports something exotic and you'll get an error on compile; check that import first. Second, classes that declare a FUNCTION method that takes positional-arg style rather than **kwargs-compatible signatures can miswire if your graph doesn't feed every required input. And the wildcard outputs only have values when the pasted function returns them - wire only what you're actually using. If you want the LLM to write the class for you rather than pasting one, that's what the pack's OmniNodeAPI and OmniNodeGuide are for.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| code | STRING | — | |
| omni_specopt | STRING | — |
Outputs (24)
| Name | Type | Description |
|---|---|---|
| output_1 | * | — |
| output_2 | * | — |
| output_3 | * | — |
| output_4 | * | — |
| output_5 | * | — |
| output_6 | * | — |
| output_7 | * | — |
| output_8 | * | — |
| output_9 | * | — |
| output_10 | * | — |
| output_11 | * | — |
| output_12 | * | — |
| output_13 | * | — |
| output_14 | * | — |
| output_15 | * | — |
| output_16 | * | — |
| output_17 | * | — |
| output_18 | * | — |
| output_19 | * | — |
| output_20 | * | — |
| output_21 | * | — |
| output_22 | * | — |
| output_23 | * | — |
| output_24 | * | — |