For the programmer

What a panel supplier can't make you.

Everything on this page is what you can build, customise or connect yourself: an AI agent that edits the same project files you do, your own widgets and components, libraries you already standardised on, your data sources and your own house style. None of it needs a fork of the core.

AI-driven engineering

An agent that edits the same files you do.

NEXT HMI ships a built-in Model Context Protocol (MCP) server exposing 30+ read/write tools over the same pages, datasources, alarms and translations the editor writes — no separate export format, no scripting layer bolted on the side. Every destructive change comes with a dry-run diff first, so an agent building the forty near-identical screens a line needs is reviewable the same way a colleague's pull request is.

Turn it on per project — the manager's MCP checkbox decides whether an agent may touch that project at all — so it is opt-in, not a background process reading everything you have.

Custom-widget SDK

Your widgets sit next to the built-ins.

Drop a .tsx into custom-widgets/ and it hot-compiles into the catalogue — description, icon, typed properties and all. No Node toolchain, no rebuild of the core, and no second-class treatment: a house widget you wrote three projects ago is offered on the same dialog, in its own category, as the containers and buttons that ship with the platform.

  • Categories, not one long list — layout, content, navigation, inputs, and one per widget pack the project carries.
  • Every entry describes itself, because the description comes from the widget's own schema.
  • Reuse across projects is a folder copy, and the properties come with it.
The add-widget dialog: a category list from Layout and structure to Other with Aquavane selected, and the Aquavane entries AlarmStrip, Conveyor and TankLevel marked Custom and KPI Cell marked Component, each with a one-line description.
The Aquavane pack, in the catalogue. Its own category beside the built-in ones, every entry described by its own schema.
Bring your own

External JS libraries, wired in for you.

Drop an ESM bundle into external-libraries/ and import it from any custom widget through a generated import map — charting, gauges, whatever the customer already standardised on. No bundler step of your own to maintain, and no waiting on us to add a library you already trust.

Reusable components

Build it once, drop it anywhere.

A component is a group of widgets you build in the editor — no code — and then reuse like any built-in. Give it properties, and every copy on every page takes its own values: the same KPI cell shows throughput in one place and cap torque in the next. Fix the component once and every copy follows.

  • Typed properties — each input is a normal property, so it binds to a tag, a translation or an $if like any other.
  • Slots — leave a hole in the layout and let each copy fill it with its own widgets.
  • In the catalogue with its own description, icon and category, next to the built-ins and your custom widgets.
Where the data comes from

Connectors: OPC-UA now, more on the roadmap.

An asyncua client pool subscribes, writes and browses your OPC-UA address space — viewport-aware, so the tags on screen update first however many the machine exposes. $http reads a value out of any REST API into any property, and a static datasource lets you build and demo a whole project with nothing real connected. That is what ships today. MQTT and Beckhoff ADS are on the roadmap behind the same datasource abstraction; naming them here is a statement of intent, not a claim that they exist yet.

One project, every house style

The same page, any house style.

Nothing below is a redraw. It is the built-in widget page — same page file, same bindings, same live tags — rendered under different themes. Colour roles, type family, corner radii and shadow all come from a token file, so a customer's brand is a theme you add, not a project you fork or a stylesheet you maintain by hand.

The built-in widget page under the Aquavane theme: a soft off-white background, rounded cards, a teal accent through the segmented control, switch, gauges, progress bar and trend lines.
Aquavane. The house theme the brewery demo project ships with — teal accent, generous radii, Manrope.
The same built-in widget page under a dark theme: near-black background, dark surfaces, a blue accent, light text on every label and readout.
Dark. For the panel at the machine, where a white screen is the thing the operator complains about first.
The same built-in widget page under the Centris theme: a cooler grey-blue background, a cyan-blue accent, tighter corner radii and a different type family.
Centris. A second brand on the same platform — another accent, another type family, tighter radii.

The theme is picked per project and can be switched at runtime, so the same build serves the plant's own palette and a machine builder's white label without a second deployment. Ten colour roles and seven text styles per theme, each with the contrast maths already done against the background and the raised surface — a customer's brand colour fails here, not in a plant audit.

Enterprise edition

Your brand, and a paper trail.

For machine builders and regulated plants. The enterprise build shows your own logo on the boot screen instead of ours, comes code-signed, and can add an audit trail: who acknowledged which alarm, who wrote a value to the machine, and who signed in or out. The open-source build stays complete on its own: nothing on the rest of this page needs it. What it costs is on Pricing.

Built for programmers

Your widget, next to the built-ins.

Docs → custom widgets