Skip to main content

Plugin Quickstart

Enterprise 3.3.0+. Use a compatible Enterprise release and public @outburn/types declarations that include FumePluginModule. Node 24 is the tested author/build runtime. No private runtime SDK is required.

Create the artifact​

Create basic/entry.cjs with this complete CommonJS entry. The JSDoc import is type-only and does not load @outburn/types at runtime.

basic/entry.js
/**
* © Copyright Outburn Ltd. 2022-2026 All Rights Reserved
* Project name: FUME
*/

/** @type {import('@outburn/types').FumePluginModule<{}, {
* upper: (value: string) => string,
* add: (left: number, right: number) => number
* }>} */
module.exports = {
manifest: {
apiVersion: 1, id: 'basic', version: '1.0.0',
variables: [{ localName: 'prefix', value: 'Hello ' }, { globalName: 'basicInfo', value: { version: '1.0.0' } }],
functions: [
{ export: 'upper', localName: 'upper', globalName: 'basicUpper', signature: '<s:s>' },
{ export: 'add', localName: 'add', globalName: 'basicAdd', signature: '<nn:n>' }
],
mappings: [{ id: 'greet', localName: 'greet', globalName: 'basicGreet', rootRoute: '/basic-greet',
signature: '<o?o?:s>', expression: '$prefix & $upper(name)' }]
},
createFunctions: () => ({ upper: value => value.toUpperCase(), add: (left, right) => left + right })
};

From the plugin project's directory:

npm init -y
npm install --save-dev @outburn/types typescript @types/node @vercel/ncc@0.38.4
npx tsc --noEmit --allowJs --checkJs --skipLibCheck --target ES2022 --module commonjs --types node basic/entry.cjs
npx ncc build basic/entry.cjs --minify --out build/basic
New-Item -ItemType Directory -Force dist | Out-Null
Move-Item -Force build/basic/index.js dist/basic.cjs

Configure the server​

Create deployment.yaml beside dist:

version: 1
workers: 1
maxConcurrencyPerWorker: 1
plugins:
- id: basic
path: ./dist/basic.cjs

From the server's working directory, use an absolute deployment path:

$env:FUME_PLUGINS_CONFIG = 'C:\plugins\deployment.yaml'
node dist/server/fume-server.js

For the Windows SEA distribution, set the same environment variable and start fume-server.exe instead. Keep your normal license and authentication configuration. No valid license bypass or authentication exemption is introduced.

Execute​

'{"name":"Ada"}' | curl.exe http://localhost:42420/basic-greet -H 'Content-Type: application/json' --data-binary '@-'

The JSON result is "Hello ADA". With authentication enabled, also send the appropriate bearer token. The plugin's root route executes the isolated greet mapping; it does not expose its source. The global functions $basicUpper, $basicAdd and $basicGreet are callable in ordinary mappings.

$basicAdd(2, 3)

This returns 5. See Examples for the complete scoped/callback and local HTTP adapter deployments, and Configuration for secrets and limits.