Vite Configuration
UsecreatePluginConfig() from the SDK:
vite option accepts any Vite config to merge in — plugins, resolve aliases, CSS config, etc.
If you only have a UI module, omit the background field.
Build Scripts
With background module:cross-env for Windows compatibility with the BUILD_TARGET environment variable.
How the Build Works
UI build (default): Compiles your React code into a single ESM bundle. Shared dependencies are externalised and resolved from the shell at runtime viawindow.__stratos_modules__.
Background build (BUILD_TARGET=background): Compiles your Node.js module into an ESM bundle. Electron, Node.js builtins, and the SDK are externalised.
What Gets Externalized
You do not need to bundle these — the shell provides them at runtime: UI externals:react,react-dom@tanstack/react-query,@tanstack/react-router@skyvexsoftware/stratos-sdksonner,socket.io-clientmaplibre-gl,react-map-gl/maplibre
electron@skyvexsoftware/stratos-sdksocket.io-client- All Node.js built-in modules
lucide-react, your own utilities) will be bundled into your plugin.
Build Output
Afterpnpm build, the dist/ directory contains:
Development Workflow
Live Reload Development
The recommended development workflow uses the Stratos app’s dev mode:- Open Stratos with the
--devflag - Log in and select your airline
- In your plugin directory:
| Change | Behavior |
|---|---|
UI component code (src/ui/**) | Auto-reloads on save |
| CSS / Tailwind classes | Auto-reloads on save |
Background module (src/background/**) | Auto-rebuilds and hot-reloads |
plugin.json | Restart pnpm dev |
| New dependencies | Run pnpm install then restart pnpm dev |
Manual Testing (No Dev Server)
If you prefer to test with a production build:- Run
pnpm build - Copy the
dist/contents to Stratos’s plugins directory:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Stratos/plugins/my-plugin/ |
| Windows | %APPDATA%\Stratos\plugins\my-plugin\ |
| Linux | ~/.config/Stratos/plugins/my-plugin/ |
- Restart Stratos — it discovers plugins by finding
plugin.jsonin each subdirectory.
dist/ directory to skip the copy step:
Deploying
Upload to Skyvex
When your plugin is ready:- Bump the
versioninplugin.json - Run
pnpm build - Zip the
dist/directory - Upload to the Skyvex website
Airline Plugin Sync
When a plugin has"type": "airline", the VA platform manages distribution. Stratos automatically syncs required plugins on authentication:
- Pilot logs in to their VA
- Shell fetches the VA’s required plugin list
- Missing plugins are downloaded and installed automatically
- Updates are applied automatically when new versions are published
"user" type plugins, pilots install them manually.
CDN Layout
Plugin artifacts are stored at:latest.json Format
latest.json to detect available updates, verifies integrity via SHA256, and checks shell version compatibility before installing.