Plugin Manifest

This document defines the plugin.json file found at the root of your plugin folder. For example, see Fundamental’s plugin.json file.

JSON paths are denoted in “flat format”, as used by jq.

.slug

String. Required.

The unique identifier for your plugin. Case-sensitive. Slugs may only contain letters a-z and A-Z, numbers 0-9, hyphens -, and underscores _.

After your plugin is released, the slug must never change, otherwise patch compatibility would be broken. To guarantee uniqueness, it is a good idea to prefix the slug by your “brand name” if available, e.g. “MyCompany-MyPlugin”.

The word “slug” comes from web publishing to represent URL paths that never change, which in turn comes from typesetting.

.name

String. Required.

The human-readable name for your plugin. Used for labeling your plugin the VCV Library.

Unlike slugs, the name can be changed at any time without breaking patch compatibility.

.version

String. Required.

The version of your plugin should follow the form MAJOR.MINOR.REVISION. Do not include the “v” prefix—this is added automatically where appropriate.

The MAJOR version should match the version of Rack your plugin is built for, e.g. 1. You are free to choose the MINOR.REVISION part of your plugin version. For example, MyPlugin 1.4.2 would specify that your plugin is compatible with Rack 1.X.

If you publish the source code in a git repository, it is recommended to add a git tag with git tag vX.Y.Z and git push --tags.

.license

String. Required.

The license of your plugin. Use "proprietary" for commercial and freeware plugins.

If your plugin uses a common open-source license, use the identifier string from the SPDX License List, such as GPL-3.0-or-later, GPL-3.0-only, MIT, BSD-3-Clause, CC0-1.0, etc.

.brand

String. Optional.

Prefix string for all modules in your plugin. For example, the brand “VCV” is used by the Fundamental plugin to create “VCV VCF”, VCV Unity”, etc. If blank or undefined, the plugin name is used.

.description

String. Optional.

A one-line summary of the plugin’s purpose. If your plugin doesn’t follow a theme, it’s probably best to omit this.

.author

String. Required.

Your name, company, alias, GitHub username, etc.

.authorEmail

String. Optional.

Your email address for support inquiries.

.authorUrl

String. Optional.

Homepage for yourself or your company.

.pluginUrl

String. Optional.

Homepage for the plugin itself.

.manualUrl

String. Optional.

The manual website of your plugin. E.g. HTML, PDF, GitHub readme, GitHub wiki.

.sourceUrl

String. Optional.

Homepage for the source code. For GitHub URLs, use the main project page, not the .git URL.

.donateUrl

String. Optional.

Link to donation page for users who wish to donate. E.g. PayPal.Me, Cash App links.

.changelogUrl

String. Optional.

Link to the changelog of the plugin.

.modules[].slug

String. Required.

The unique identifier for the module. Similar guidelines from .slug apply.

.modules[].name

String. Required.

The human-readable name for the module.

.modules[].tags

Array of strings. Optional.

List of tags representing the functions and/or properties of the module. All tags must match the following strings, case-insensitive.

Arpeggiator

Breaks a chord into a sequence of single notes.

Attenuator

With a level knob and not much else.

Blank

No parameters or ports. Serves no purpose except visual.

Chorus

Clock generator

Deprecated aliases: Clock

Clock modulator

Clock dividers, multipliers, etc.

Compressor

With threshold, ratio, knee, etc parameters.

Controller

Use only if the artist “performs” with this module. Simply having knobs is not enough. Examples: on-screen keyboard, XY pad.

Delay

Digital

Distortion

Drum

Deprecated aliases: Drums, Percussion

Dual

The core functionality times two. If multiple channels are a requirement for the module to exist (ring modulator, mixer, etc), it is not a Dual module.

Dynamics

Effect

Envelope follower

Envelope generator

Equalizer

Deprecated aliases: EQ

Expander

Expands the functionality of a “mother” module when placed next to it. Expanders should inherit the tags of its mother module.

External

Filter

Deprecated aliases: VCF, Voltage controlled filter

Flanger

Function generator

Granular

Hardware clone

Deprecated aliases: Hardware

Clones the functionality, panel design, and component layout of a hardware module on the market.

Remember to follow the VCV Plugin Ethics Guidelines and only clone hardware with permission from its owner.

If there is a ModularGrid page for the hardware module, add the modularGridUrl property.

If the module name does not include the hardware’s name or brand, add that information to the module description so users can search for the module by its hardware name, e.g. "Based on Mutable Instruments Clouds".

Limiter

Limits a signal from exceeding a threshold, e.g. with soft clipping or dynamic range compression.

Logic

Implements binary logic with gate signals.

Low-frequency oscillator

Deprecated aliases: LFO, Low frequency oscillator

Low-pass gate

Deprecated aliases: Low pass gate, Lowpass gate

MIDI

Mixer

Multiple

Noise

Oscillator

Deprecated aliases: VCO, Voltage controlled oscillator

Panning

Deprecated aliases: Pan

Phaser

Physical modeling

Polyphonic

Deprecated aliases: Poly

Quad

The core functionality times four. If multiple channels are a requirement for the module to exist (ring modulator, mixer, etc), it is not a Quad module.

Quantizer

Random

Recording

Reverb

Ring modulator

Sample and hold

Deprecated aliases: S&H, Sample & hold

Sampler

Sequencer

Slew limiter

Speech

Switch

Synth voice

A synth voice must have, at the minimum, a built-in oscillator and envelope.

Tuner

Utility

Serves only extremely basic functions, like inverting, max, min, multiplying by 2, etc.

Visual

Vocoder

Voltage-controlled amplifier

Deprecated aliases: Amplifier, VCA, Voltage controlled amplifier

Waveshaper

.modules[].description

String. Optional.

A one-line summary of the module’s purpose. Displayed in the Module Browser tooltip.

modules[].manualUrl

String. Optional.

The manual website of the module. If omitted, the plugin’s manual is used.

modules[].modularGridUrl

String. Optional.

If this module has the Hardware clone tag, this is the URL to the ModularGrid page for that module. Example: "https://www.modulargrid.net/e/mutable-instruments-clouds"

In a partnership with ModularGrid, modules released to the VCV Library will be linked to and from their ModularGrid page. For example, Mutable Instruments Clouds on ModularGrid has an “Available for VCV Rack” link to Audible Instruments Texture Synthesizer on the VCV Library.

.modules[].deprecated

Boolean. Optional.

Specifies that the module should no longer be used and only remains for patch compatibility. If a successor module exists, add its name to the description, e.g. “Replaced by MyModule 2”.

In a future version of Rack, deprecated modules will not be displayed in the Module Browser by default but can still be used by opening old patches.