Float Input (fal)
Exposing a decimal knob (CFG, denoise, strength) as an API field
- FLOAT
This is the decimal-number knob of the fal connector pack. It emits a single FLOAT, and - same as its String, Boolean, and Integer siblings - its job is to become a named parameter in your workflow's API once the graph runs on fal.ai. The difference from the others is that a float has natural bounds, so this node lets you declare them: alongside the name and the value, you get min, max, and step. Locally it's just a number that outputs a number. Through fal, it's the labeled, range-limited slider your API exposes.
It's part of the ComfyUI-fal-Connector, fal's bridge for running a ComfyUI workflow on their serverless GPUs. Build the graph, "Save as fal format," POST it to fal.run/fal-ai/comfy-server, and each Float Input becomes an overridable numeric field - {"cfg": 6.5} in, result out.
What you'd wire it to
Floats are the continuous dials of a diffusion graph: CFG scale, denoise strength on a KSampler, LoRA strength, ControlNet weight, IPAdapter weight. Any of those you want a caller to tune per request gets a Float Input. Give it a clear name (cfg, denoise), a sane default, and bounds that keep callers out of nonsense territory - a CFG field capped at, say, 2–15 stops someone sending 500 and getting a fried image and a support question.
The inputs that matter
Five required inputs, but only a couple you'll fuss over:
- name - the API parameter key. Default
float_input; rename it to the thing it controls. - number - the value itself, and the default when a caller sends nothing. Defaults to
0. - min / max - the allowed range. The out-of-the-box defaults are enormous (roughly ±2.1 billion), i.e. effectively unbounded, which is fine for a raw pass-through but sloppy for a public API. Tighten them to the parameter's real range.
- step - the increment for the slider widget, default
0.1. Purely how granularly the value ticks; drop it to0.01when you need finer control (LoRA strength, denoise), leave it at0.1for coarse dials like CFG.
The single output is a FLOAT. Wire it into any float input - a sampler's cfg/denoise, a LoRA loader's strength, a ControlNet Apply's weight. It's an ordinary float wire from there.
Installing it
The connector ships with fal's bundle, per the README:
git clone --recursive https://github.com/badayvedat/ComfyUI-fal.git
cd ComfyUI-fal
pip install -r requirements.txt
Add your fal API key to fal-config.ini (optional Hugging Face token too). The README flags the path: the file belongs in ComfyUI-fal/custom_nodes/ComfyUI-fal-Connector/, not the repo root. Launch with main.py.
Just want the node in an existing ComfyUI? ComfyUI Manager → search ComfyUI-fal-Connector, or cd ComfyUI/custom_nodes && git clone https://github.com/badayvedat/ComfyUI-fal-Connector, then restart. No model files, no heavy deps.
Where people get burned
The classic float mistake is a step and min/max that fight the value you want - set step to 1 and you can't dial 0.75 on the widget; leave min at 0 when the parameter legitimately wants negatives and you've locked yourself out. Match the bounds and step to the actual knob. Beyond that it's the pack-wide caveat: with no fal-config.ini and no fal-ai/comfy-server target, the "API parameter" magic isn't present - locally this is just a number node, and the name/min/max only take on meaning inside fal's pipeline. Auth failures on remote runs almost always trace back to the config file's location or a missing key, not the node.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| name | STRING | float_input | — |
| number | FLOAT | 0.00 | — |
| min | FLOAT | -2147483648.00 | — |
| max | FLOAT | 2147483648.00 | — |
| step | FLOAT | 0.10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | — |