Skip to main content
Get a Noorle plugin running in minutes. This guide walks you through creating, building, and uploading a simple plugin.

Prerequisites

  • Noorle CLI installed (installation guide)
  • A Noorle account with API key
  • Rust toolchain (for the example below)

Create and Build a Plugin

1

Initialize Your Plugin

noorle plugin new my-calculator
cd my-calculator
This creates a basic plugin project with the required structure.
2

View Your Plugin Configuration

Open noorle.yaml to see the plugin metadata:
schema_version: 1.0
metadata:
  name: my-calculator
  description: "A simple calculator plugin"
  author: "Your Name"
  license: "MIT"
runtime: v1
permissions:
  network:
    allow: []
  filesystem:
    allow: []
3

Implement a Tool

Edit your plugin source (e.g., src/main.rs for Rust):
pub fn add(a: f64, b: f64) -> f64 {
    a + b
}

pub fn multiply(a: f64, b: f64) -> f64 {
    a * b
}
4

Build to WebAssembly

noorle plugin build
This compiles your plugin to plugin.wasm and creates a .npack archive with your code and configuration.
5

Upload to Noorle

noorle plugin push --api-key YOUR_API_KEY
Your plugin is now available in the Noorle platform. You’ll see the plugin ID and active version.
6

Use Your Plugin

In a Noorle agent or MCP gateway, call your tools:
{
  "name": "my_calculator_add",
  "arguments": {
    "a": 5,
    "b": 3
  }
}
Response:
{
  "result": 8
}

Language-Specific Guides

Choose your preferred language for more detailed setup:

Rust

Native WASM support with cargo-component

Python

Use componentize-py for Python plugins

TypeScript

ComponentizeJS for TypeScript/JavaScript

Go

TinyGo for Go plugins

Next Steps

Troubleshooting

Build fails with unknown target error:
# Ensure WASM target is installed
rustup target add wasm32-wasip2
Plugin won’t upload:
  • Verify your API key with noorle login
  • Check that noorle.yaml is valid YAML
Tools not appearing in MCP gateway:
  • Ensure tool metadata is defined in noorle.yaml
  • Check that plugin has appropriate permissions for the network/filesystem resources it uses