Skip to main content
Every plugin has a myrax.plugin.toml (or plugin.toml) at its root. This is the complete set of fields the panel reads — anything else is ignored.
id = "my-plugin"
name = "My Plugin"
version = "0.1.0"
myrax = ">=0.1.0"

[ui]
mode = "native"
entry = "web/plugin.js"
styles = ["web/plugin.css"]

[runtime]
enabled = true
command = "/usr/bin/env"
args = ["node", "runtime/server.js"]
transport = "tcp"
port = 0

[access]
level = "trusted"

Top level

FieldRequiredDefaultMeaning
idyeslowercase a-z 0-9 - _ only; used in URLs, the data dir and window.myrax[id]
namenoiddisplay name in the panel
versionno0.0.0shown in the UI and used to cache-bust assets
myraxnominimum panel version, e.g. ">=0.1.0"

[ui]

FieldDefaultMeaning
modenative if entry is setonly native is supported — the entry is imported as an ES module into the panel
entrypath to the JS module exporting register(myrax), relative to the plugin root
styles[]stylesheets to load before the entry; relative paths are served from /addons/{id}/ with cache busting
Omit the whole section for a backend-only plugin.

[runtime]

Omit the section if the plugin is frontend-only.
FieldDefaultMeaning
enabledfalsestart a backend process with the plugin
commandexecutable; relative paths resolve against the plugin directory
args[]arguments
transporttcptcp or unix
port0TCP port; 0 means the panel picks a free one and passes it via MYRAX_PLUGIN_PORT
With transport = "unix" the panel passes a socket path in MYRAX_PLUGIN_SOCKET instead of a port. See Runtime for the full contract.

[access]

FieldDefaultMeaning
leveltrustedthe only level today — plugins run with the panel’s privileges

Parsing notes

  • Values are simple TOML: strings, booleans, integers and one-line string arrays. Nested tables are not supported.
  • # comments are allowed on their own line or after a value.
  • A missing or invalid id fails the install with an explicit error.