Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Plugins

Plugins allow users to extend the use case of the NADI System by adding more functions or scripts. User are expected to only use plugins from trusted sources, or develop it in-house. Although the compiled plugin functions have their code exposed in their documentation for the transparency purposes even if the source code is not available, always make sure the plugin you run are not malicious.

There are two types of nadi plugins. Compiled plugins (shared libraries) are loaded dynamically from shared libraries, while executable plugins are called as shell commands. Refer to Plugins section of core concepts for more details.

Compiled Plugins

Compiled plugins are shared libraries (.so in linux, .dll in windows, and .dylib on macOS). They can be generated by compiling the nadi plugin in rust, or you can download the correct plugin for your OS and nadi_core version from the plugin repositories. It is recommended to only use plugins from trusted source.

To setup the nadi-systm to load the compiled plugins you have to place them inside the directory included in the NADI_PLUGIN_DIRS environmental variable. Refer to your Operating System’s documentation on how to set environemental variables.

The compiled plugins are loaded when NADI is starting up, there is no way to hot load or reload the plugins, so you need to reopen the nadi program itself (CLI, IDE, etc) if you want to load new/updated plugin functions.

Once the plugins are loaded, the functions are directly available from the nadi task system, they’ll act similar to the internal plugin functions.

Executable Plugins

Executable plugins are terminal commands, you set it up as you’d set any other terminal programs, by making sure the program is in PATH and can be executed from terminal. Linux and Mac do them mostly by default, while in Windows you might have to check the box saying something along the lines of “include this in path” during installation, or manually edit the PATH in “Environment Variables”.

For example, if you want to call python scripts, make sure you can run python --version in terminal and get a response.

You can also check it using the command function:

network command("python --version", echo=true)
network command("Rscript --version", echo=true)
network command("julia --version", echo=true)

Results:

$ python --version
Python 3.13.5

$ Rscript --version
Rscript (R) version 4.5.1 (2025-06-13)

$ julia --version
julia version 1.11.6

Here we can see, the commands that ran successfully and returned a version are valid.

To write scripts and run them from nadi refer to Executable Plugins section on Plugin Developer Guide.