# Native plugins

> Build, verify, inspect, install and remove AU, VST3, CLAP and AAX plugins with the maru plugin commands.

Canonical: https://maruaudio.com/docs/native-plugins
Documentation index: https://maruaudio.com/llms.txt

The `maru plugin` commands build a module into native plugins for a DAW, check
them, and manage the plugins Maru installs on your machine. Native builds need
the native compiler toolchain, which the `maruaudio` npm package does not
include yet: in this release, `maru plugin build` stops with exit code 4 and
says the toolchain is missing. [`maru doctor`](https://maruaudio.com/docs/cli.md#check-this-machine)
reports which platform SDKs and compilers are present.

## Build

```bash
maru plugin build --format vst3
```

`maru plugin build` compiles the module's programs, packages its face and
resources, and produces a plugin bundle for each requested format: Audio Unit,
VST3, CLAP and AAX where the module and platform support them, and a standalone
app. `maru plugin build --help` lists the formats and the options for building
several formats or modules at once.

The plugin identity, parameter list and saved-state format come from the
module declaration. Keep the module's identity stable across releases: hosts
use it to find the plugin in saved sessions, and parameters are matched by
their stable position, so add new parameters at the end rather than
reordering existing ones.

## Verify and inspect

```bash
maru plugin verify-formats   # check the built formats against the module
maru plugin inspect <bundle> # inspect one built or installed plugin
```

`maru plugin verify-formats` loads the built formats and compares their
behavior with the module's reference output. `maru plugin inspect` reports what
a single plugin bundle contains and how it behaves in a headless host, which
helps when a DAW refuses to load it. It is separate from `maru doctor`, which
checks your machine rather than a plugin.

Then test the plugin in real hosts: [Testing your VST](https://maruaudio.com/docs/testing-your-vst.md)
walks through a first host check.

## Install and remove

```bash
maru plugin install          # build and install the module's plugins for this user
maru plugin list             # plugins installed by Maru
maru plugin uninstall <id>   # remove one installed plugin
```

`maru plugin install` places the plugin bundles in your system's standard
plugin folders and records what it installed. `maru plugin list` shows those
records, and `maru plugin uninstall` removes exactly the bundle a record owns;
it never touches plugins that Maru did not install.

## Formats and signing

Which formats a module can produce depends on the module, the platform and the
SDKs available. AAX builds need Avid's SDK and produce development bundles for
testing; distributing an AAX plugin also needs Avid signing. Code signing and
notarization for distribution follow your platform's requirements. The module
page and verification report state which formats a release supports.
