NuggetVPN.Docs
Plugin SDK

plugin.json reference

Every manifest field, file constraint, and package limit.

NuggetVPN client documentation

Every plugin has a plugin.json at the root of its zip.

{
  "format": 1,
  "id": "com.example.weather",
  "name": "Server weather",
  "version": "1.0.0",
  "author": "You",
  "description": "What it does, in a sentence or two.",
  "homepage": "https://example.com/weather",
  "icon": "icon.png",

  "themes": [ … ],
  "fonts": [ … ],
  "routing": [ … ],

  "panel": { "title": "Weather", "file": "panel.html" },
  "background": "background.html",

  "permissions": ["state", "profiles", "notifications"],
  "network": ["status.example.com"]
}

About the plugin

FieldRequired
formatyesAlways 1. A newer app may read newer formats; this one refuses others and says so.
idyesYour plugin's permanent id. Use 3–64 lowercase letters, digits, ., - and _, starting and ending with a letter or digit. A reversed domain works well: com.example.weather. An update must keep the same id.
nameyesUp to 60 characters.
versionyesAny version string of letters, digits, ., + and -, up to 32 characters. Shown to the user; the app doesn't compare versions.
authorUp to 80 characters.
descriptionUp to 500 characters, shown in the install prompt and the plugin list.
homepageAn https:// address. It is shown, never opened by the app.
iconA PNG, JPEG, WebP or SVG file in the plugin. Shown square, at 36–40 px.

Content

Field
themesCustom themes. See content.
fontsFont files. See content.
routing.vflow routing setups. See content.

Pages

Field
panel{ "title": "…", "file": "panel.html" }: a page shown under the plugin in Settings → Plugins. title is up to 40 characters and defaults to the plugin's name.
background"background.html": a page kept running while the plugin is on.

See writing pages.

Access

Field
permissionsWhat the plugin's pages may do. See permissions. Ask only for what you use; the install prompt lists every one.
networkHost names your pages may contact, over https and wss, like api.example.com or *.example.com. Nothing else is reachable. IP addresses, localhost and local names (.local, .lan, .internal, .home.arpa) are refused. Only allowed for plugins with a page.

Files

File names may use letters, digits, ., - and _, in folders separated by /. Names can't start with a dot. Every file the manifest names must be in the plugin, with the right kind of extension.

A plugin can be at most 50 MB, with at most 500 files of up to 25 MB each, and 80 MB unpacked.

Files are served with a type decided by extension. Anything else is not served:

.html, .js, .mjs, .css, .json, .svg, .png, .jpg, .jpeg, .webp, .gif, .ttf, .otf, .woff, .woff2, .txt

On this page