AIHub Action Set Project Config Integer
Storing an integer in the client project's config — state that survives the run
AIHub Action Set Project Config Integer writes a whole number into the client project's config file. It's the integer sibling of the pack's boolean, float, and string config setters - same idea, one type swapped. A workflow computes something, like a frame count, a seed, a batch size, or a chosen option's index, and this node leaves it where a later workflow or the client app can pick it up. On its own it does nothing visible, and that's exactly the point: it's a shared scratchpad for multi-step pipelines.
This is part of otavanopisto's ComfyUI-aihub-workflow-exposer, which bridges ComfyUI to external apps. The "project" is state the client owns - a folder with a config.json plus files, in the simplest case. Multi-stage generation (think step-by-step video where each workflow hands off to the next) is exactly the scenario these nodes were built for.
How it works
On execution it sends one message over the pack's websocket (port 8111): {"type": "SET_CONFIG_VALUE", "field": "<field>", "value": <value>}. The client writes the value into its project store, and dots in the field string address nested levels. That's the whole job - no file payload, no return value, just a state write.
The inputs that matter
- field (required) - the dotted path to write to, e.g.
video.resolution_indexorjob.batch_count. - value (required) - the integer to store, clamped to the standard 32-bit range (roughly ±2.1 billion). Wire it from a computed value or set it as a widget.
No outputs. Pure side effect.
Installing it
ComfyUI Manager (search "ComfyUI-aihub-workflow-exposer"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/otavanopisto/ComfyUI-aihub-workflow-exposer
# restart ComfyUI
No dependencies beyond ComfyUI itself.
Where people get burned
Three things, all of them about expectations. The path must match the read side exactly - job.batch_count on write and read has to be identical, dots included. The value range is a 32-bit integer; if you try to store something huge or fractional, this isn't the node for it (the float sibling handles decimals). And the pack-wide rule: this only means something in a project context with a client connected. Run it in the stock UI with no aihub client and it looks like it did nothing, because it did - from your perspective, at least.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| field | STRING | my-field | The field to set, use dots for entering sublevels |
| value | INT | 0-2147483648–2147483647 | The value of the field to set |
Outputs (0)
No outputs