Skip to main content
Custom nodes are packages built by the community that add functionality ComfyUI does not ship with. They are ordinary ComfyUI nodes in every respect: they declare inputs and outputs, run on your machine, and connect to core nodes freely. The difference is that you install them yourself and a third-party author maintains them. For how custom nodes compare to core and partner nodes, see the nodes overview.

Where they come from

Most custom nodes are published to the Comfy Registry, a public catalog of versioned node packages. The registry is what powers search and installation inside ComfyUI Manager, and it is where you publish your own package when it is ready to share. A package can contribute any combination of Python nodes that run on the server, frontend extensions that change the UI, workflow templates, and subgraph blueprints.

Installing and managing

ComfyUI Manager is the recommended way to work with custom nodes. It searches the registry, installs packages along with their Python dependencies, updates or pins versions, disables packages without deleting them, and detects nodes missing from an imported workflow. Desktop builds include it; portable and manual installs may need it enabled first.

Install Custom Nodes

Installing via ComfyUI Manager, Git, or a ZIP download, plus dependency installation.

ComfyUI Manager

Searching, updating, disabling, and troubleshooting node packages.
Two things to keep in mind, since custom nodes execute arbitrary Python inside your ComfyUI process:
  • Trust matters. Install packages you have reason to trust, and prefer ones that are actively maintained. The registry scans published nodes for malicious behavior such as arbitrary system calls, and marks the ones that pass with a verification flag.
  • Dependencies can conflict. Two packages may want incompatible versions of the same Python library. If ComfyUI stops starting after an install, disable the newest package first. See custom node issues.

Building your own

If nothing in the registry does what you need, write it. A minimal node is a Python class with an input specification and a function, and you can extend from there into custom datatypes, lazy evaluation, node expansion, and frontend extensions.

Develop Custom Nodes

Walkthrough, backend and UI APIs, datatypes, and packaging.

Publish to the Registry

Versioning, pyproject.toml standards, CI/CD, and claiming an existing node.