# Custom Nodes / Node Packs Copy your node packs to this directory. When nodes are added or changed, you must restart the app to see the changes. ## Directory Structure For a node pack to be loaded, it must be placed in a directory alongside this file. Here's an example structure: ```py . ├── __init__.py # Invoke-managed custom node loader │ ├── cool_node │ ├── __init__.py # see example below │ └── cool_node.py │ └── my_node_pack ├── __init__.py # see example below ├── tasty_node.py ├── bodacious_node.py ├── utils.py └── extra_nodes └── fancy_node.py ``` ## Node Pack `__init__.py` Each node pack must have an `__init__.py` file that imports its nodes. The structure of each node or node pack is otherwise not important. Here are examples, based on the example directory structure. ### `cool_node/__init__.py` ```py from .cool_node import CoolInvocation ``` ### `my_node_pack/__init__.py` ```py from .tasty_node import TastyInvocation from .bodacious_node import BodaciousInvocation from .extra_nodes.fancy_node import FancyInvocation ``` Only nodes imported in the `__init__.py` file are loaded.