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.
| Type | Runs in | Typical use |
|---|---|---|
| Engine | The Engine process, as native C++ code. | Device connections, tasks, operations, and DCode functions. |
| Interface | The Interface, using the host’s React runtime and Engine connection. | Operator pages, task and module editors, settings panels, and schematic nodes. |
| Combined | Both 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.
| Guide | Purpose |
|---|---|
| Engine Plugin | Native plugin configuration, lifecycle, registrations, and Engine APIs. |
| Interface Plugin | UI plugin configuration, lifecycle, contributions, and host APIs. |
| Building a Hardware Driver | A walkthrough connecting a device module, read/write tasks, discovery, and configuration UI. |
| Building a Custom Peer | Add an Engine peer type using a custom transport or a bridge to another protocol. |
| Packaging and Installation | Build prerequisites, packages, local installation, and GitHub releases. |
| Storage and Settings | Settings, 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 verifynpm 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 sideThe 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.