Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.skyvexsoftware.com/llms.txt

Use this file to discover all available pages before exploring further.

Every plugin must include a plugin.json at its root. The shell reads this file to discover, validate, and register your plugin before loading any code. Point your editor at the JSON Schema for autocomplete and inline validation:
{
  "$schema": "https://cdn.skyvexsoftware.com/schemas/stratos-plugin.json"
}

Required Fields

id

Type: string Unique identifier for your plugin. Used internally for routing, IPC namespacing, config storage, and CDN distribution paths. Rules: lowercase alphanumeric and hyphens only. Must be unique across all installed plugins.
{ "id": "fleet-manager" }

name

Type: string Display name shown in the sidebar and settings screens.
{ "name": "Fleet Manager" }

version

Type: string Semantic version string. Must match the version in latest.json on the CDN when distributing updates.
{ "version": "1.2.0" }

description

Type: string Short description of what the plugin does. Displayed in the plugin info panel.
{ "description": "Browse and book available flights across the fleet." }

type

Type: "user" | "airline" Controls how the plugin is distributed:
  • "airline" — Managed by the VA admin platform. Required plugins are synced automatically to all pilots when they authenticate. The VA admin controls which version pilots receive.
  • "user" — Installed by individual pilots from the plugin store. Each pilot can install or remove it independently.
{ "type": "airline" }

author

Type: PluginAuthor
FieldTypeDescription
idstringUnique developer slug (e.g. "my-va"). Used in CDN paths.
namestringDisplay name (e.g. "My Virtual Airline").
contactstringOptional contact email.
{
  "author": {
    "id": "my-va",
    "name": "My Virtual Airline",
    "contact": "dev@my-va.com"
  }
}

icon_light and icon_dark

Type: string Relative paths to sidebar icons — one for light theme, one for dark theme.
{
  "icon_light": "icon-light.svg",
  "icon_dark": "icon-dark.svg"
}
Icon requirements:
  • Place files in assets/ at the plugin root (e.g. assets/icon-light.svg)
  • SVG or PNG format
  • Square aspect ratio
  • Both variants required — the shell switches between them based on the active theme

Background Modules

Background modules do not require any manifest configuration. The shell discovers them automatically by convention — if a background/index.js file exists in your plugin’s root directory, the shell loads it as a background service in the Electron main process. See Background Module for the module contract.

Optional Fields

availableSettings

Type: array Declares configurable settings for your plugin. The shell renders these automatically in the Settings page. Each setting has:
FieldTypeDescription
keystringUnique key used to read/write the value
namestringDisplay label
descriptionstringOptional help text
typestringInput type (see table below)
scope"user" | "airline"Who can configure this setting
defaultanyDefault value
Setting types:
TypeRendered AsExtra Fields
booleanToggle switchdefault?: boolean
textText inputdefault?, pattern?, placeholder?
longtextTextareadefault?, placeholder?
numberNumber inputdefault?, min?, max?, step?
rangeSliderdefault?, min (required), max (required), step?
listDropdowndefault?, options (required)
radioRadio groupdefault?, options (required)
dateDate pickerdefault?
jsonMonospace textareadefault?
Scopes:
  • "user" — Each pilot configures their own value in Stratos Settings.
  • "airline" — Controlled by the VA admin platform. Read-only in the client. Use for VA-wide config like welcome messages, branding, event rules, or feature flags.

Full Example

{
  "$schema": "https://cdn.skyvexsoftware.com/schemas/stratos-plugin.json",
  "id": "fleet-manager",
  "type": "airline",
  "name": "Fleet Manager",
  "version": "2.0.0",
  "description": "Browse and book available flights across the fleet.",
  "author": {
    "id": "my-va",
    "name": "My Virtual Airline",
    "contact": "dev@my-va.com"
  },
  "icon_light": "icon-light.svg",
  "icon_dark": "icon-dark.svg",
  "availableSettings": [
    {
      "key": "welcome_message",
      "name": "Welcome Message",
      "description": "Custom message displayed on the dashboard",
      "type": "longtext",
      "scope": "airline",
      "placeholder": "Enter a welcome message..."
    },
    {
      "key": "show_map",
      "name": "Show Map",
      "description": "Display the flight map on the main page",
      "type": "boolean",
      "scope": "user",
      "default": true
    },
    {
      "key": "units",
      "name": "Unit System",
      "type": "list",
      "scope": "user",
      "default": "imperial",
      "options": [
        { "value": "imperial", "label": "Imperial (ft, kts, lbs)" },
        { "value": "metric", "label": "Metric (m, km/h, kg)" }
      ]
    }
  ]
}