IEC 61131-3 Certified Runtime

From field device
to NATS JetStream
in minutes.

AdapTier bridges Modbus TCP, M-bus, OPC-UA, BACnet, and HTTP to NATS JetStream — with a browser-based IEC 61131-3 PLC IDE, hot-reload config, and one-command edge deployment built in.

5+
Protocols
0ms
Downtime on reload
<2s
Edge boot time
850KB
Runtime bundle

Supported Protocols & Transports

Modbus TCP
M-bus TCP
OPC-UA
BACnet/IP
HTTP REST
NATS JetStream
MQTT
SparkPlug B
Modbus TCP
M-bus TCP
OPC-UA
BACnet/IP
HTTP REST
NATS JetStream
MQTT
SparkPlug B
// Core platform

The platform.
Not a point tool.

Designed for building automation engineers who need reliable, real-time protocol bridging without vendor lock-in or brittle custom integrations.

Hot-Reload

Zero-downtime config changes

Change register maps, poll intervals, or PLC logic in the browser. The running service reloads via NATS KV watch — atomically, at cycle boundary, without dropping a single data point.

KV-watch atomic swap
PLC IDE
🖥

Browser-based IEC 61131-3 IDE

Full FBD, Ladder, SFC, and Structured Text programming with live online debugging, force variables, and version snapshots — in any browser. No software to install.

IEC 61131-3 Ed. 3
Edge Deploy
📡

Edge-to-cloud via NATS

Every poll reading streams to NATS JetStream. The 850 KB runtime bundle boots in under 2 seconds on Raspberry Pi. Deploy via zip, roll back in one command.

ARM64 + AMD64
Bidirectional
🔄

Reads and writes

Control actuators via Modbus FC5, FC6, FC15, FC16. Rate-limited, batched, or cyclic writes with drop or queue strategies. Not just monitoring — control.

Write commands
Security
🔐

Sandboxed script engine

Custom JS transforms run in isolated worker_threads with zero Node.js imports and a 500ms timeout. Handle any proprietary register layout safely.

Zero-import sandbox
Multi-Tenant
🏢

Multi-tenant by design

SERVICE_UID scopes all NATS subjects and KV keys. One API serves unlimited field sites simultaneously with full isolation between deployments.

Per-UID namespace
// Protocol support

Every protocol.
Production-ready.

Stop writing custom integrations. AdapTier handles the protocol complexity so you can focus on building automation logic.

Protocol Mode Capabilities Key feature Status
Modbus TCP Master/Client
ReadWrite
FC1–4 reads · FC5/6/15/16 writes · 247 unit IDs · script transforms Production
M-bus TCP Master
ReadScan
Auto-discover meters 1–250 · DIF/VIF decoding · FCB alternation Production
OPC-UA Client
ReadWriteSubscribe
MonitoredItem subscriptions · session reconnect · TUI browser tool Prototype
BACnet/IP Client
ReadWriteCOV
Change-of-Value subscriptions · WriteProperty with priority 1–16 Prototype
HTTP REST Client
ReadWrite
GET/POST/PUT polling · custom transforms · zero dependencies Prototype
// Getting started

Up in three steps.

From bare metal to live data in minutes, not days.

01

Configure in the browser

Add your Modbus or M-bus devices in the Configurator UI. Scan the bus to auto-discover meters. Map registers to named data points. Hit save — the config goes live instantly via NATS KV.

02

Deploy to the edge

Run the CLI or use the agent API to push a zip package to your edge node. The 850 KB runtime boots in under 2 seconds on a Raspberry Pi. Roll back instantly if needed.

adaptier-agent deploy app.zip --node pi-01
03

Data flows to NATS

Every poll reading publishes to NATS JetStream in real time. Connect dashboards, historians, PLC logic, or your own consumers — all via standard NATS subjects.

adaptier.v1.<uid>.model.data

A PLC IDE that lives
in the browser.

Full IEC 61131-3 programming — FBD, Ladder, SFC, and Structured Text — with live online debugging, force variables, version snapshots, and NATS I/O mapping. No installation. Deploy over NATS.

FBD Ladder SFC Structured Text

10 stdlib function blocks

TON, TOF, TP timers · CTU/CTD/CTUD counters · SR/RS latches · R_TRIG/F_TRIG edge detectors

Live online debugging

Force variables, inspect every pin, toggle tasks — all without redeploying. Value badges on every FBD wire in real time.

NATS I/O mapping

Map any global variable to a NATS subject. The PLC reads field data directly from the protocol service stream — no glue code.

Version history & snapshots

Auto-snapshot on every deploy. Color-coded diffs. Restore any previous version in one click. Max 50 snapshots per project.

AdapTier PLC IDE — Function Block Diagram with live online debugging
Live debug · poll-group-1
3 entries Clear
21:30:58,900elm-1.V_L3229.8
21:30:58,900elm-1.V_L2229.3
21:30:58,900elm-1.V_L1229.3
21:30:59,000ahu1.supplyTemp22.7
21:30:59,001ahu1.returnTemp18.3
21:30:59,050pump1.runningtrue
21:30:59,112chiller.setpoint6.0
21:30:59,200meter1.energy4823.1
21:30:59,315vav3.position42
21:30:59,400boiler.pressure1.8
21:30:58,900elm-1.V_L3229.8
21:30:58,900elm-1.V_L2229.3
21:30:58,900elm-1.V_L1229.3
21:30:59,000ahu1.supplyTemp22.7
21:30:59,001ahu1.returnTemp18.3
21:30:59,050pump1.runningtrue
21:30:59,112chiller.setpoint6.0
21:30:59,200meter1.energy4823.1
21:30:59,315vav3.position42
21:30:59,400boiler.pressure1.8

See your data.
Right now.

Select a poll group in the tree and the debug panel streams every reading as it arrives — path, value, timestamp — directly via WebSocket. No page refresh. No polling.

Values stream in via WebSocket push
Connection and poll-group status indicators
Timestamps, paths, and values in monospace
Auto-subscribes when you select a poll group

Deploy anywhere.
Roll back instantly.

AdapTier Agent is a lightweight NATS-controlled edge deployment manager. Push zip packages to edge nodes, manage process lifecycle via pm2, and roll back in one command — no SSH required.

Zip-based deployment over NATS

No SSH. No CI/CD pipeline required. Deploy from the CLI or any NATS client.

Versioned with instant rollback

Current and previous version always available. One command to swap back — atomic symlink switch.

pm2 process management

Auto-restart on crash, configurable retry limits, per-app stdout/stderr logs. Survives agent restarts.

Auto NODE_ID detection

In Docker: reads MAC address from host network interface. No manual configuration needed.

adaptier-agent-cli
$ adaptier-agent deploy app.zip --node pi-01
→ Uploading to adaptier.bootstrap.deploy.pi-01
✓ Deployed adaptier-plc-runtime v0.3.1 to pi-01
 
$ adaptier-agent status --node pi-01
app: adaptier-plc-runtime
status: running · pid: 1042 · uptime: 2m
 
$ adaptier-agent rollback adaptier-plc-runtime --node pi-01
✓ Rolled back to v0.3.0 on pi-01

Your field devices deserve
better than custom scripts.

AdapTier gives building automation teams a production-ready platform that grows with your deployment — from a single Modbus device to hundreds of field sites.