Open source · Apache 2.0 Self-hosted No vendor lock-in

The browser-based HMI for industrial systems.

An open, self-hosted alternative to traditional HMI/SCADA panels. NEXT HMI runs in any browser, connects to your PLCs over OPC-UA, and ships with an in-browser editor so integrators build operator dashboards without leaving the runtime.

Get started Star on GitHub git clone · docker run · or portable zip
localhost:8000/config/pages
The NEXT HMI in-browser page editor showing live motor temperature, speed and motor size widgets bound to OPC-UA data.
Built on
FastAPI React OPC-UA asyncua Python 3.11+ Node 20+
What you get

The first HMI an AI agent can build for you — in one runtime.

Author pages, wire datasources, and define alarms in the browser — or hand the whole job to a Claude agent. Every artifact is a plain file on disk, so the runtime, the editor, and the agent all read and write the same project.

In-browser editor

A three-pane WYSIWYG editor with a live iframe preview. Edit pages, datasources, alarms, translations, and users — all under /config/*.

Git-native projects

Pages, alarms, theme and translations are plain JSON/CSV on disk — no database, no binary. Diff it, back it up, copy the folder to move an install.

Custom widgets

Drop a .tsx into custom-widgets/ and it's hot-compiled to a schema-driven widget — no Node toolchain, no rebuild of the core.

Property expressions

21+ composable wrappers — $var, $if, $switch, $loc and more — let any property react to live data without scripting.

AI-driven engineering

An embedded MCP server exposes ~50 read/write tools, so an agent can build pages, datasources and alarms — with dry-run diffs guarding every destructive change.

OPC-UA out of the box

An asyncua client pool subscribes, writes, and browses — with a viewport-aware fast/slow window so visible tags update first.

Responsive design

A single project branches layout by viewport class — phone, tablet, laptop — through $viewport, with no media-query CSS to maintain.

External JS libraries

Drop an ESM bundle into external-libraries/ and import it from any widget through a generated import map — no core rebuild.

Open-core add-ons

One build ships everything; a license token unlocks the extras — a historian that records and charts your tags, plus condition-based alarms with acknowledgement.

Property expressions

One binding language for every property — no scripting.

Traditional HMIs split static values, tag bindings, and expressions into separate property modes. NEXT treats binding as a first-class language: any property can be a literal or any of 21+ wrappers, and they nest recursively across i18n, conditional layout, viewport branching, and inter-widget data.

$var $if $switch $compare $loc $viewport $widgetProp $user $time $alarmCount + 11 more
motor-status.widget.json
// colour the gauge from the live motor temperature
"color": {
  "$if": {
    "cond": { "$compare": ["$var":"PLC1:motor1.temp", ">", 120] },
    "then": "#e5484d",
    "else": "#2563eb"
  }
},
"label": { "$loc": "MotorSpeed" },
"value": { "$var": "PLC:motor1.speed" }
How it fits together

One server between your operators and your machines.

Browsers connect over a single WebSocket. The FastAPI server holds the OPC-UA client pool and pushes live tag updates to every screen.

Operator screens

Browser runtime

Any device with a browser renders pages and custom widgets — no install on the floor.

React
WebSocket
Runtime + editor

FastAPI server

Serves pages, hosts the editor, and streams tag updates. Project data is plain JSON/CSV on disk.

FastAPIPython 3.11+
OPC-UA
Field devices

PLCs & machines

Subscribe, write, and browse over OPC-UA through the asyncua client pool.

asyncuaOPC-UA
Run it your way

Single-binary distribution.

Run from source while you develop, from Docker on a server, or from a portable zip on a panel PC. Same runtime, same project folder.

01 / Source

From source

Clone the repo and run the dev server with hot reload for both the runtime and your custom widgets.

$ uv run web-hmi
02 / Container

From Docker

One command brings up the server and serves the example project. Mount your own project folder to deploy.

$ docker compose up
03 / Portable

Portable zip

Download a self-contained Mac or Windows build. Unzip, double-click, and the runtime is live — nothing to install.

$ ./next-hmi
Questions

Frequently asked questions.

What NEXT HMI is, how it connects to your machines, and how it differs from traditional HMI/SCADA panels.

What is NEXT HMI?

NEXT HMI is a free, open-source, self-hosted HMI (Human-Machine Interface) and SCADA platform that runs entirely in the browser. It connects to PLCs over OPC-UA, streams live tag data to operator screens over a single WebSocket, and includes an in-browser editor for building dashboards without proprietary tooling.

Is NEXT HMI free and open source?

Yes. NEXT HMI is open source under the Apache License 2.0. You can self-host it with no per-seat licences, no vendor lock-in, and full access to the source on GitHub.

How does NEXT HMI connect to PLCs?

NEXT HMI uses an asyncua OPC-UA client pool to subscribe to, write, and browse tags on your PLCs and field devices. A FastAPI server holds the connection pool and pushes live updates to every connected browser, with a viewport-aware fast/slow window so visible tags update first.

How is NEXT HMI different from traditional HMI/SCADA software?

Traditional HMI panels require proprietary editors, per-device licences, and Windows-only runtimes. NEXT HMI runs in any browser, stores every project as plain JSON/CSV on disk (so it is Git-friendly and diffable), and uses a single composable expression language for every property instead of split tag/expression modes.

Can an AI agent build HMI pages in NEXT HMI?

Yes. NEXT HMI ships with a built-in Model Context Protocol (MCP) server that exposes around 50 read/write tools. An AI agent can author pages, datasources, and alarms directly, with dry-run diffs guarding every destructive change.

How do I install and run NEXT HMI?

You can run it three ways from the same project folder: from source with hot reload during development, from Docker with docker compose up on a server, or from a self-contained portable zip on a panel PC — unzip and double-click, nothing to install.

Open source · Apache 2.0 licensed

Build your first HMI page in minutes.

Clone the repo, open the editor, drop a widget on a page, and bind it to a live OPC-UA tag. No proprietary panels, no licences to manage.