This is part 1 of the Your First Plugin tutorial.
Scaffold the project
Use the Noxus CLI to generate a plugin from the template:create is interactive — it prompts for a few values and expands a template:
plugin_name):
There is no
manifest.json in the scaffold. The manifest is generated from
your code — see Generate the manifest below. Never
write or edit it by hand.pyproject.toml. Here’s a minimal pyproject.toml:
Keep
noxus-sdk at or above the platform’s version. The sandbox resolves
noxus-sdk alongside your dependencies; pinning an older floor can make the
worker fail to start.Define the plugin class
Openweather_plugin/__init__.py. A plugin subclasses
BasePlugin[YourConfig] and returns the components it provides from
nodes(), integrations(), triggers(), and datasources():
The four provider methods return lists of classes your plugin exposes. A plugin
must provide at least one node, integration, trigger, or datasource:
We’ll populate
nodes() in the next section.
Validate the structure
validate imports your plugin class, generates the manifest in memory, and
reports any errors or warnings. Run it often as you develop. Add --strict to
make warnings fail too.Generate the manifest
The manifest is the install-time contract, derived entirely from your code. Generatemanifest.json with:
noxus plugin package --path ./weather-plugin
bundles the source and a fresh manifest into an archive you upload via the
platform’s Add plugin flow.
Run locally
For a quick local authoring loop, serve the plugin over HTTP:http://localhost:8505/health to verify it’s running, or
http://localhost:8505/manifest to inspect the generated manifest.
serve is a local authoring aid. On the platform, plugins don’t run as an HTTP
server — they run as sandboxed JSON-RPC workers, and file operations (reading or
writing platform files) are only available there, not under serve. Use serve
to iterate on node logic that doesn’t touch platform files; use the install flow
to exercise the full runtime.Next: First Node →
Create your first node with bindable inputs, typed outputs, and logic.