Prerequisites
- Node.js 20+
- pnpm (recommended)
- The Stratos app installed with
--devflag access
1. Scaffold your plugin
The fastest way to get started:2. Understand the key files
plugin.json
Every plugin needs a manifest. The scaffolder generates this for you:
id must be unique — lowercase alphanumeric and hyphens only. The type controls distribution: "airline" plugins are synced to all pilots by the VA; "user" plugins are installed individually.
vite.config.ts
createPluginConfig handles everything: externalising shared dependencies (React, TanStack Query, the SDK), ESM output format, asset copying, and dev server auto-connect. The vite option lets you add extra Vite config like Tailwind.
src/ui/index.tsx
Your plugin’s root component. Must be the default export:
/plugins/my-plugin and wraps it with providers that supply plugin context, error boundaries, and theme.
3. Develop with live reload
Start the Stratos app with the--dev flag, log in, and select your airline. Then in your plugin directory:
4. Build for distribution
When you’re ready to ship:dist/ directory:
dist/ directory and upload it to the Skyvex website.
Adding a background module
If your plugin needs server-side functionality (Express routes, IPC handlers, database access), add a background module:- Create
src/background/index.ts:
- Update
vite.config.ts:
- Add
cross-envand update build scripts inpackage.json:
Next steps
- Architecture — how the shell loads and runs plugins
- Plugin Manifest — full
plugin.jsonreference - UI Module — hooks, styling, and context
- Background Module — running code in the main process
- Build & Deploy — bundling and distribution