Plugins

Plugins add new nodes, GPU effects, and audio gear to DNA without changing the app itself.

DNA ships with a deep library of built-in nodes, but you can extend it. A plugin drops new tools into the palette that behave just like the ones that came with the app — they show up in search, wire into your graph, and carry their own controls. Some are made by other artists and studios; some you might write yourself.

Everything you install lives in ~/.dna/plugins/, and the Plugin Manager window lists what you have, lets you enable, disable, or reload each one, and shows any errors.

What a plugin can add

There are a few flavours, and a single plugin sticks to one:

Visual plugin formats like FFGL and OpenFX are a planned extension, not something that ships today. For now, custom GPU looks are best authored as shader plugins.

Installing vs authoring

There are two ways to come at plugins, and they're documented separately.

If someone hands you a plugin to use, head to Installing plugins. Plugins arrive as a single bundle file that you drop onto DNA; it shows you what the plugin wants access to and where it came from before anything is installed.

If you want to build your own, start with Authoring a node plugin for custom nodes or Authoring a shader plugin for GPU effects. The plugin.toml reference covers the small text file that describes every plugin.

Python and shader plugins hot-reload — edit the file, and DNA picks up your changes without a restart. Native plugins need a restart to swap.

Trust and safety

Plugins are real code running on your machine, so DNA gates what they can touch. Each plugin declares up front whether it needs things like GPU access, file access, the network, or persistent storage — and when you install one, you see those requests and decide.

Bundles can be signed by their publisher. A trusted, signed plugin installs with a quiet, neutral prompt; an unsigned or unknown one installs with an "unverified publisher" warning so you can think twice.

If a plugin misbehaves and crashes, DNA isolates it — that plugin's nodes stop, but the rest of your graph and your other plugins keep running. Reloading clears the problem.

See Capabilities & trust for the full picture, and Trust & Permissions for how trust works across DNA generally.

See also