AyMON — the industrial monitoring and automation engine

AyMON

The industrial monitoring and automation engine. It reads devices, keeps every value in one live tree, raises alarms and keeps history — on Windows, Linux and Raspberry Pi, free to start.

What AyMON is

Automation as configuration, not as a new program for every plant

AyMON is an industrial monitoring and automation engine. It sits between the machines and the people and systems that need them: it reads PLCs, meters, sensors and cameras over their own protocols, keeps every value in one live tree, raises alarms, keeps history in SQL, and serves it all to web pages, other systems and AI assistants — in both directions.

Our claim is that automation should be described, not programmed again for every plant. In AyMON a connection, a device and a point are elements of one XML configuration; scaling, limits, alarm levels, history and access rights are attributes on them; the logic that is truly yours is a few lines of script beside the point it belongs to. What usually takes a gateway, a SCADA server, a historian and the code that glues them together becomes one engine and one configuration.

And it is the same engine everywhere. A project that runs on a Raspberry Pi beside a machine runs unchanged on a Windows PC by the line, on a Linux server in the plant, and on two or three servers that take over from each other when one fails. The configuration grows; the rules do not change.

One AyMON engine running on field devices, HMI panels, SCADA servers and cloud platforms

And more

Not only a SCADA engine

AI assistants, inside your rules

Over MCP, an assistant such as Claude reads live values, history, alarms, events and the engine’s own logs, and looks into what is going on. If you allow it, it can also act: acknowledge an alarm, change a set point — only the points its role may write, and only as many as you allow at once.

Not only for factories

Data centres, buildings, labs and classrooms run on it too. It works with SQL Server, PostgreSQL and TimescaleDB, any ODBC database and its own built-in SQLite, and writes alarms, events and value history there by itself.

Cameras in the engine

USB and IP cameras (RTSP, MJPEG, ONVIF) are connections like any other. The engine takes the frames and analyses them itself: regions, counts, edges, motion, a pattern found in the picture — about 600 frames a second on a laptop.

Redundancy built in

Engines replicate to each other, and two or three servers form a cluster: when the master stops, a spare carries on from the same values within a second or two. Records on their way to the database survive a server going down.

In production

Proven on real systems

The same engine runs data-centre infrastructure monitoring (DCIM) systems in production. One of them, for a single building, follows more than 1 800 devices and 270 000 points — UPSs, PDUs, cooling units, generators, sensors and meters over SNMP and Modbus — on three entry-level servers that back each other up.

That is a starting point, not a ceiling: on larger servers the same engine serves more devices and more points, and a larger site spreads its work over more servers. Nothing in it needs a different engine or a different build.

How it works

On one side, the things that make data. On the other, the people and systems that need it. AyMON sits between them and speaks to both — in both directions, so a page or an assistant can also change a value, if it is allowed to.

Machines and devices

  • PLCsModbus
  • MachinesOPC UA
  • Sensors, IoTMQTT
  • Network gearSNMP
  • CamerasRTSP, USB
  • Anything elseTCP, serial

AyMON engine

  • one live tree of values
  • alarms and limits
  • history in SQL
  • logic in script

Windows · Linux · Raspberry Pi

People and systems

  • Web pagesHTTP, WS
  • DashboardsMQTT, REST
  • ReportsSQL
  • Mail, filesSMTP, FTP
  • Another AyMONcluster
  • AI assistantsMCP

Three ideas

Everything else follows from these.

1

Everything is an element

A connection, a device, one request to it, a single measured point — each is an element in one XML tree, with an address anything can read or write: con → dev → bi → io.

2

Configuration before code

Scaling, rounding, limits, alarms and history are attributes, not programs. Script — a language close to JavaScript — is for the logic that is really yours.

3

A change is an event

When a value arrives, the functions written beside it run in order: convert, round, check the limits, raise the alarm, publish. Nothing polls the tree.

What it looks like

A tank station on Modbus TCP: one connection, one device, one request for four registers, and the tank level with its scaling and four alarm limits. Not one line of script. Shortened from the example PRJEDU_modbus.

<con id="CN_MB" xdb_fnc="[CON.tcp,PRO.modbus]"
     con_mod="CLIENT" pro_role="MASTER"/>

<dev id="TANK" pro_con="CN_MB" pro_adr="1"
     con_host="127.0.0.1" con_port="1502">

  <!-- one request: read 4 holding registers, every second -->
  <bi id="TANK_BLK" pro_fni="3" pro_adr="0" pro_len="4"
      evt_fnc="[PRO.pol]" evt_per="1" pro_fnc="[PRO.inp]">

    <!-- register 0, tenths of a percent -->
    <io id="TANK_LEVEL" pro_adr="0" pro_fnc="[VAL.put]"
        val_fnc="[VAL.cnv,ATR.rou,ATR.lmt,ALM.onlvl]"
        val_cnv_dlt="0.1" val_rou="0.1" val_unt="%"
        val_alm_onlhi_alm="95" val_alm_onlhi_wrn="85"
        val_alm_onllo_wrn="15" val_alm_onllo_alm="5"/>
  </bi>
</dev>

Where it runs

  • Windows x64, and Linux x86-64 (Ubuntu 22.04+, Debian 12+, RHEL 9 and alike).
  • One executable and its libraries — no runtime to install, no database required.
  • A FREE edition that never expires: enough for every example, for learning and for personal projects.
  • Two engines can share one job — replication, and a cluster that fails over.

Repositories

Start with the examples: each one runs with a single command and needs no hardware, no licence and no database unless it says so.

Start here

AyMON

Runnable projects and short guides: Modbus, MQTT, OPC UA, SNMP, SQL, live web pages, a camera inspecting bottles, a PLC program, a PID lab, a robot cell, an AI assistant on a plant — and the engine for Windows, Linux and Raspberry Pi.

Coming later

AyPLG

The plug-in SDK: add a protocol, a connection type, a script library or an SQL driver to the engine, in plain C, with one header.

Coming later

AyDATA

The core library underneath: the type system, and the live XML tree with XPath and JSON that every value lives in.

AyMON is developed by Şenol Erçetin and licensed exclusively to AKYA Canada Inc.

Questions: Discussions · Support: support@aymon.ca · Licensing: licensing@aymon.ca

See it running

Examples from the repository

Every one starts with one command, with no hardware and no licence. Click a picture to enlarge it.
PRJEDU_vision — a camera inspects bottles on a filling line inside the engine: 100 frames a second, every bottle judged, no script for the watching.

PRJEDU_vision — a camera inspects bottles on a filling line inside the engine: 100 frames a second, every bottle judged, no script for the watching.

PRJEDU_robotarm — a six-axis cobot and the cell around it, over its dashboard and Modbus; the cell checks its own rules before every command.

PRJEDU_robotarm — a six-axis cobot and the cell around it, over its dashboard and Modbus; the cell checks its own rules before every command.

PRJEDU_plc — a PLC program for a filling line: remote I/O over Modbus, a step sequence, interlocks and an HMI.

PRJEDU_plc — a PLC program for a filling line: remote I/O over Modbus, a step sequence, interlocks and an HMI.

PRJEDU_oee — OEE of a production line shift by shift: availability, performance, quality, losses and a shift report in SQLite.

PRJEDU_oee — OEE of a production line shift by shift: availability, performance, quality, losses and a shift report in SQLite.

PRJPER_adsb — the aircraft overhead from an ADS-B receiver's stream, with an emergency squawk raised as an alarm.

PRJPER_adsb — the aircraft overhead from an ADS-B receiver’s stream, with an emergency squawk raised as an alarm.

Editions

Free to start, licensed to grow

FREE

Never expires. Every protocol, production use included, within 8 connections and 8 devices.

Education

For classrooms and trying out: the same engine, 32 logged-in users.

Commercial

More connections, devices and users, and engines on separate machines.

News & Updates

Engine releases, guides and news from the plants that run AyMON.

AyMON now runs on Raspberry Pi

AyMON now runs on Raspberry Pi

Until now AyMON has run on Windows and on Linux servers. The same engine now runs on 64-bit ARM as well: a Raspberry Pi 5 with 64-bit Raspberry Pi OS (Bookworm or Trixie), or another arm64 Linux board. The current release carries it, and the repository has it beside...

read more
AyMON has a home of its own: aymon.ca

AyMON has a home of its own: aymon.ca

AyMON, the industrial monitoring and automation engine, now has a site of its own. Here you will find what the engine does, how to run it in five minutes, the guides, release notes and application news — and, in the coming months, online licensing.AyMON is...

read more
Patent Pending for AyMON

Patent Pending for AyMON

We’re excited to announce that AKYA Canada has filed a patent application with the Canadian Intellectual Property Office (CIPO) for the core technology behind AyMON — our industrial automation execution engine. AyMON is designed to solve a fundamental...

read more

Where to go next

See what the engine speaks, how the editions differ, or run your first example in five minutes.