Extensions/Fast Node Refresh
ComfyUI Extension

Fast Node Refresh

Automatically refresh file-backed node choices using native filesystem notifications and selective node-definition updates.

By envy-ai·Created a day ago·Updated a day ago· 0
envy-ai/fast_node_refresh
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme

fast_node_refresh

Refreshes file-backed node choices when files are added, removed, or renamed.

Install Fast Node Refresh through ComfyUI Manager, or clone it from the ComfyUI root and install the dependency using ComfyUI's Python environment:

git clone https://github.com/envy-ai/fast_node_refresh.git custom_nodes/fast_node_refresh
python -m pip install -r custom_nodes/fast_node_refresh/requirements.txt

Restart ComfyUI after installation.

The server uses watchdog's native filesystem observer (inotify on Linux) and coalesces event bursts for about 200 ms, with a one-second maximum delay during continuous changes. It reads directories affected by events and sends dependent node names to connected browsers. Each browser fetches only those node definitions and updates their existing combo widgets, including nodes inside subgraphs. Current selections are preserved. The normal Refresh Node Definitions command remains available.

An initial file index is built at startup. New or recreated roots and symlink targets get native watches and an initial reconciliation scan. There is no recurring directory timestamp polling.

Model folders used through folder_paths.get_filename_list() or get_folder_paths() are tracked automatically. Nodes using get_input_directory(), including core image loaders, are tracked for top-level input images. File contents changing without a filename change do not refresh definitions. Python node code changes still require a restart. Custom nodes that read paths without these folder_paths functions still need the normal manual refresh.

The model sidebar has its own refresh control; this extension updates node choices, not the sidebar's loaded folder view. The frontend's node-definition store still processes the full cached set when an affected definition arrives, although the server sends and re-registers only affected definitions.

Run the focused checks from the ComfyUI root using its Python environment:

python -B -m unittest discover -s custom_nodes/fast_node_refresh/tests -v
node custom_nodes/fast_node_refresh/tests/test_browser.mjs

See IMPLEMENTATION_PLAN.md for the design and remaining limits.