External Number (ComfyUI Deploy)
The float input for deployed workflows — and its one genuinely weird quirk
- value
Every deployed txt2img workflow needs at least one number the caller can turn: steps, CFG, denoise strength, seed. "External Number" is the ComfyUI Deploy input for floats - the node your API callers address to control any continuous value in the graph. It outputs a FLOAT, and in the editor it looks like a boring pass-through with a default. That's the whole job, and it does it well.
The pattern is identical to the rest of the External family: the caller's value arrives at the node, and the graph reads it as if you'd typed it in. Where it gets interesting is how the value actually travels - which is also where people get confused.
How it works
Here's the quirk, and it's worth understanding because it explains half the "why isn't my number doing anything" threads about this pack: the node parses the value out of input_id. The run method tries float(input_id) - when ComfyDeploy calls your workflow, it stuffs the caller's number into that string field, and the node parses it back into a float. If parsing fails (empty, or non-numeric text), it falls back to default_value.
So input_id is doing double duty: it's the API key and the value carrier. That's why the schema lists it as required while default_value is optional.
Inputs and output
input_id- defaultinput_number. The key callers use - and, when deployed, the slot their number lands in.default_value- FLOAT, default 0, range about ±2.1 billion with a 0.01 step. What's used when the caller sends nothing.- Optional:
display_name,description.
Output: value (FLOAT).
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/BennyKok/comfyui-deploy.git
Restart ComfyUI, or install "ComfyUI Deploy" via ComfyUI Manager. No models, no key, no heavy deps.
Where people get burned
The trap is hand-editing input_id in the editor. If you type a number into it to "test," you're overwriting your API key - and the node happily parses it, which makes it look like the number is working. Then you deploy, your caller sends a value for the key you renamed, the backend can't match it, and the workflow runs with the default while you stare at the console wondering why. Leave input_id as the key. Set default_value for the fallback. Let ComfyDeploy do the injecting.
Second: floats only. This node parses with float(), so it accepts decimals and even scientific-ish input, but if your value is meant to be an integer you'll get a float out anyway (steps as 20.0 will usually still work, but it's sloppy). The Int variant exists for a reason. And remember the lenient fallback: a caller sending "abc" gets the default, not an error - which is polite, but it's also how bad input becomes a subtly wrong image.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| input_id | STRING | input_number | — |
| default_valueopt | FLOAT | 0.00-2147483647–2147483647 | — |
| display_nameopt | STRING | — | |
| descriptionopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| value | FLOAT | — |