A Sero plugin can provide Pi tools and commands, a React app, and an optional background runtime. It can also contribute components or standard controls to host-owned extension points.
New authors should start with Plugin Quickstart. Users who only want to install an app should use App Store, Favorites, and Installed Plugins.
Open App Store to browse installed apps or discover community plugins. The installer accepts these source forms:
| Source | Exact form |
|---|---|
| npm | npm:@scope/package@version |
| Git | git:https://github.com/owner/repository.git |
| Local folder | /absolute/path/to/plugin |
Git and local installs can install dependencies and build source. They support
npm and pnpm package managers. A source package must not contain unresolved
workspace: or catalog: dependency versions. Install source only when you
trust the repository.
An npm UI package must include dist/ui/remoteEntry.js. A Git or local source
package with a UI needs a build script unless it declares a prebuilt package.
Use Admin → Plugins → Local Plugin Development. This flow activates a source checkout in the current profile. It is not the same as an installed plugin or a folder attached to a workspace.
For a UI plugin, Sero:
scripts.dev and sero.app.devPort;mf-manifest.json and confirms the remote name;dist/ui output as a fallback when it is available.Sero owns this development server process. If another process uses the port, stop it and let Sero start the server. UI edits refresh the plugin surface. Edits to extension, runtime, shared, resource, or manifest files refresh the development session.
The page can report these states: Starting, Active, Needs attention, and Broken. Use the shown error and redacted logs to correct a failed session.

Current UI plugins must:
sero.plugin.runtimeAbi as 2;sero.app.styleIsolation as "scope";seroPluginCssScope() from @sero-ai/plugin-vite;base: './' for production;./<Component> in Vite;<Component> without ./ in the app manifest;The current package versions in this repository are
@sero-ai/app-runtime@0.4.0 and @sero-ai/plugin-vite@0.1.1. External plugins
must use published versions instead of monorepo workspace: versions.
Sero checks sero.plugin.minSeroVersion and
sero.plugin.requiredHostCapabilities. It also checks the runtime ABI for a
plugin that has a federated UI. A UI plugin with a missing or different ABI is
inactive. An extension-only plugin has no federated UI ABI check.
State can remain on disk when a plugin is inactive. Do not use activation as a signal that plugin-owned data was deleted.