Building and Deploying Plugins
Enterprise 3.3.0+. Build and test trusted customer artifacts before deployment. The tested build recipe uses Node 24 and @vercel/ncc@0.38.4. The Enterprise worker uses the Node runtime shipped with its server distribution; Windows SEA workers run the same executable's embedded worker entrypoint. Do not assume APIs from a newer authoring Node exist in the deployed runtime.
Bundled artifacts
npm install --save-dev @outburn/types typescript @types/node @vercel/ncc@0.38.4
npx tsc --noEmit
npx ncc build entry.ts --minify --out build/plugin
New-Item -ItemType Directory -Force dist | Out-Null
Move-Item -Force build/plugin/index.js dist/plugin.cjs
For JavaScript use the quickstart's checkJs command and entry.cjs. Keep type checking and bundling separate. Audit dependencies and lockfiles; build in CI rather than installing into a running server. mode: bundled is an operator declaration, not a runtime bundler or dependency scanner. Verify that the artifact really resolves every required module and separately package any declared data assets.
Unbundled artifacts
Use mode: unbundled for an entry whose CommonJS dependencies are installed beside its actual file:
plugin-release/
deployment.yaml
entry.cjs
node_modules/
customer-helper/
Module resolution uses the canonical entry path and adjacent node_modules, not the server's private dependency tree or ambient NODE_PATH. Install locked production dependencies during your build, then ship the directory read-only. Both modes require a .cjs entry. Native-addon/sidecar packaging is outside the supported recipe; platform binaries require separate validation and are not automatically included.
Windows and Docker
For Windows, point FUME_PLUGINS_CONFIG at the deployment file and grant the service account read access. Paths containing spaces work when quoted normally. The plugin worker is already included in the Enterprise Node/SEA distribution; do not launch it yourself or supply arbitrary executable selectors.
For Docker, prepare files readable by the non-root container user and mount them read-only:
docker run --rm -p 42420:42420 --mount 'type=bind,source=C:\plugins\release,destination=/opt/plugins,readonly' -e FUME_PLUGINS_CONFIG=/opt/plugins/deployment.yaml outburnltd/fume-enterprise-server:3.3.0
Use the corresponding available Enterprise release tag and supply your normal license/auth/FHIR configuration. Artifact paths in the mounted deployment remain relative to /opt/plugins; host-only paths cannot resolve in the container. Never mount host credentials or broad writable filesystems merely to satisfy dependency resolution.
There is no automatic npm install, remote fetch, upload/hot reload or background-consumer supervisor. Deploy immutable versioned artifacts and restart; confirm health and a representative authorized request before shifting traffic. See Configuration for configEnv and rollback.