Plugins

Covers Engine Plugin SDK 2.0.0 · Interface Plugin SDK 0.2.0

Overview

Build drivers and operator tools with the public example plugin.

Plugins extend DARTWIC with device drivers, native services, and operator tools. A plugin can add Engine behavior, Interface tools, or both, using the same internal APIs and frameworks DARTWIC uses.

For example, Modbus device drivers and custom tasks:

Or custom ways to visualize your projects:

Plugins can be automatically downloaded within the interface through the Plugin Browser from the public manifest, or from manually pasting a GitHub link.

Plugin Types

The two sides of a combined plugin share one manifest ID. The Engine side supplies behavior; the Interface side supplies controls and presentation. The Engine and Interface guides explain how each side loads and is removed.

TypeRuns inTypical use
EngineThe Engine process, as native C++ code.Device connections, tasks, operations, and DCode functions.
InterfaceThe Interface, using the host’s React runtime and Engine connection.Operator pages, task and module editors, settings panels, and schematic nodes.
CombinedBoth hosts, with each side installed separately.A device driver with its configuration editors and operator controls.

Plugin Guides

Below you can find some guides to help get started quickly in building your first plugin.

GuidePurpose
Engine PluginNative plugin configuration, lifecycle, registrations, and Engine APIs.
Interface PluginUI plugin configuration, lifecycle, contributions, and host APIs.
Building a Hardware DriverA walkthrough connecting a device module, read/write tasks, discovery, and configuration UI.
Building a Custom PeerAdd an Engine peer type using a custom transport or a bridge to another protocol.
Packaging and InstallationBuild prerequisites, packages, local installation, and GitHub releases.
Storage and SettingsSettings, private files, shared workspace assets, and bundled files.

Example Plugin

If you are building your first plugin, the DARTWIC example plugin gives you a working starting point to learn from and adapt. Its simulated device shows how Engine behavior and Interface tools fit together, with matching SDK snapshots and build scripts already included. It is a standalone project, so you do not need the DARTWIC Engine source.

To try it, install Git and Node.js, then clone the project using the commands below. Use a tagged example version compatible with your installed host. Keep its bundled SDKs together; copying a newer header or Interface type into an older SDK is not a supported upgrade.

git clone https://github.com/kemptonburton/dartwic-example-plugin.git my-dartwic-plugin
cd my-dartwic-plugin
npm ci
npm run verify

npm run verify checks the starter’s source files and bundled SDK consistency. To build the Engine side, first install the native tools listed in build prerequisites. Then follow the relevant plugin guide to add your implementation.

Source Layout

The example keeps native code, Interface tools, and bundled assets in separate folders so you can find the part you want to change.

plugin.json                 # identity, version, supported hosts, included sides
engine/include/             # your C++ declarations
engine/src/                 # your native implementation and defaults
interface/src/              # your Interface contributions
assets/                     # bundled files copied into each installed plugin side

The example’s engine/include/sdk and interface/sdk are versioned SDK snapshots. The generated plugin/ directory contains build output. Make source changes in the directories above, then rebuild.

Before publishing, follow the GitHub release contract for exact platform ZIP filenames, the shared manifest, and the combined Release/Debug layout.