Skip to main content

Documentation Index

Fetch the complete documentation index at: https://noorle.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

The noorle.yaml file configures your plugin’s metadata, runtime behavior, and security permissions. This is the authoritative reference for all available configuration options.

File Structure

schema_version: "1.0"

metadata:
  name: "plugin-name"
  description: "What your plugin does"
  author: "Your Name or Organization"
  license: "MIT"
  tags:
    - "data-processing"
    - "ai"
  homepage: "https://example.com"

runtime: "v1"

permissions:
  network:
    allow:
      - host: "api.example.com"
      - cidr: "10.0.0.0/8"
    deny: []

  filesystem:
    allow:
      - uri: "fs://work/agent/**"
        access: [read, write]
    deny: []

  environment:
    allow:
      - key: "API_KEY"
      - key: "DEBUG_MODE"

resources:
  limits:
    memory: "512Mi"
    timeout: "30s"

Schema Version

Type: string Required: Yes Current Version: "1.0" Specifies the noorle.yaml schema version. Ensures forward compatibility as the platform evolves.
schema_version: "1.0"

Metadata

name

Type: string Required: Yes The plugin identifier (lowercase alphanumeric and hyphens only).
metadata:
  name: "my-awesome-plugin"

description

Type: string Required: No Human-readable description of what your plugin does. Used in plugin listings.
metadata:
  description: "Connects to external APIs and processes data"

author

Type: string Required: No Author name or organization that created the plugin.
metadata:
  author: "Acme Corp"

license

Type: string (SPDX identifier) Required: No SPDX license identifier (e.g., MIT, Apache-2.0, GPL-3.0).
metadata:
  license: "Apache-2.0"

tags

Type: array<string> Required: No Searchable tags for discoverability.
metadata:
  tags:
    - "data-processing"
    - "cloud"
    - "ai"

homepage

Type: string (URL) Required: No URL to the plugin’s documentation or homepage.
metadata:
  homepage: "https://github.com/org/plugin"

Runtime

Type: string Required: No Default: "v1" Specifies which runtime profile to use for execution. Each profile defines memory limits, timeout behaviors, and execution environment. Available Values:
  • "v1" - Standard WASM runtime with Wasmtime
  • "v2" - Enhanced runtime with additional capabilities (future)
  • "edge" - Optimized for low-latency edge execution (future)
  • "native" - Native binary execution (future)
runtime: "v1"

Permissions

The permissions section defines the security sandbox for your plugin. Everything is denied by default — only explicitly allowed resources are accessible.

Network

Controls which external hosts and networks your plugin can access.
permissions:
  network:
    allow:
      - host: "api.example.com"
      - host: "*.github.com"  # Wildcard support
      - cidr: "10.0.0.0/8"
    deny:
      - host: "internal.company.com"
Supported formats:
  • host: "example.com" - Specific hostname
  • host: "*.example.com" - Wildcard subdomains
  • cidr: "10.0.0.0/8" - CIDR range notation

Filesystem

Controls which filesystem paths your plugin can read or write.
permissions:
  filesystem:
    allow:
      - uri: "fs://work/agent/**"
        access: [read, write]
      - uri: "fs://cache/data/*"
        access: [read]
    deny: []
URI Patterns:
  • fs://work/agent/** - Recursive (all nested paths)
  • fs://cache/data/* - Single level wildcard
  • fs://config/settings.json - Specific file
Access Types:
  • read - Read-only access
  • write - Write access (implies read)

Environment

Controls which environment variables your plugin can access.
permissions:
  environment:
    allow:
      - key: "API_KEY"
      - key: "DATABASE_URL"
      - key: "DEBUG"
Environment variables are allow-only (no deny list). Only explicitly listed variables are accessible to your plugin.

Resources

Defines execution resource limits for safety and cost control.

Memory Limit

Type: string (Kubernetes-style format) Examples: "512Mi", "1Gi", "256Ki"
resources:
  limits:
    memory: "512Mi"
Supported suffixes:
  • Ki - Kibibytes (1024 bytes)
  • Mi - Mebibytes (1024² bytes)
  • Gi - Gibibytes (1024³ bytes)

Timeout

Type: string (duration format) Examples: "30s", "5m", "1h"
resources:
  limits:
    timeout: "30s"
Maximum execution time for a single tool invocation.

Complete Example

schema_version: "1.0"

metadata:
  name: "weather-plugin"
  description: "Fetches weather data from OpenWeatherMap API"
  author: "Weather Corp"
  license: "MIT"
  tags:
    - "weather"
    - "api"
  homepage: "https://github.com/weather-corp/plugin"

runtime: "v1"

permissions:
  network:
    allow:
      - host: "api.openweathermap.org"
      - host: "*.openweathermap.org"

  filesystem:
    allow:
      - uri: "fs://work/agent/cache/**"
        access: [read, write]

  environment:
    allow:
      - key: "OPENWEATHER_API_KEY"
      - key: "CACHE_DIR"

resources:
  limits:
    memory: "256Mi"
    timeout: "10s"

Validation Rules

  • schema_version must be a valid version string
  • metadata.name must be alphanumeric with hyphens only
  • runtime must be one of the supported runtime profiles
  • Network hosts support wildcards (*) but not other regex patterns
  • Filesystem URIs must start with fs://
  • Memory values must be valid Kubernetes-style notation
  • Timeouts must follow duration format (number + unit)

Environment Variables in Config

Plugin runtime environment variables are set via the .env file in your .npack archive or via the API.
API_KEY=sk-1234567890
DATABASE_URL=postgres://localhost/mydb
DEBUG=false
These values override any system environment variables and are scoped to your plugin execution.