Skip to content
iot-solutions-ruPublic

Latest commit

 

History

1,933 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ISPF — IoT, SCADA, MES, and the shop-floor side of ERP

One self-hosted system for a plant. Devices on the network, operator screens, alarms, history, production accounting, and the workflows between them. Same object tree, same API, same console — on your server or in your cloud.

Website: ispf.ai · Demo: demo.iot-solutions.ru · Repo: github.com/iot-solutions-ru/ispf

License: AGPL v3 Docs Learn Changelog Stack

On a typical site those jobs are five products and a year of integration. Here a device, a dashboard, an alert rule, a correlator, and a BPMN workflow are nodes of one tree, and you talk to all of them the same way. Orchestration and twin logic sit on SINGLETON or INSTANCE hubs. A DEVICE node is the driver and the telemetry, nothing else.

ISPF operator HMI — Mini-CHP station overview with AI assistant   ISPF SCADA mimic editor — main oil pipeline P&ID with symbol library

ISPF dashboard builder — charts, network graph, and spreadsheet widgets   ISPF BPMN workflow — MES work-order dispatch editor

Business logic lives on the platform — models, variables, events, functions, and workflows. The core ships generic engines; solutions are declarative configuration (bundle deploy), not core forks. See architecture.

ISPF flow: OT drivers to object tree to HMI, alerts, BPMN, and operators

Hosted solution UIs (ui-packs)

Industry apps ship as React SPAs at /apps/<appId>/ — not pages inside the admin console. Live gallery: demo.iot-solutions.ru (admin / admin).

FarmTwin — digital twin of a pig farm   WarehouseTwin — warehouse digital twin floor plan

StoreTwin — retail floor digital twin and planograms   Oil Control — fuel balance and imbalance monitoring

CoffeeGate — coffee machine fleet overview   Laminate-flow MES — weekly production board

Claims Control — claims command center   Predictive analytics — 3D equipment monitor

Engineering systems monitoring — summary dashboard   IT infrastructure monitoring — NMS overview

LIMS — laboratory dashboard

What actually runs

Field and IoT. 162 driver packs: Modbus, OPC UA, S7, MQTT, SNMP, BACnet, IEC-104, DNP3, JDBC, and a long tail of lab codecs. 114 are marked PRODUCTION. In this repo that word means a codec plus a loopback test, not a signed plant pilot. The protocols we stand up in the interop lab are the usual industrial set. Maturity, protocol by protocol: drivers.

SCADA. Mimic editor in the browser, 218 P&ID symbols (valves, pumps, tanks, pipes, electrical), a symbol bound to a variable, and a command back to the device from the same screen. Dashboards for trends, tables, maps, and spreadsheets. Operator mode is the same screens without the admin tree. Symbol library: scada.

Alarms and shift processes. A CEL condition on a variable fires an event. A correlator can start a BPMN workflow from that event. The workflow waits on an operator in the work queue, calls a function, or branches. A trip, a work order, and an escalation are the same mechanism. automation · workflows.

History. The screen reads the last value. Trends and shift reports read the historian. Local profile is a file H2 database. In production the hot tier is PostgreSQL/Timescale (about a week of operator trends), the warm tier is ClickHouse, and cold export is Parquet. Cassandra stays experimental. historian tiers.

MES. Lines, shifts, OEE, batches, SPC, and dispatch are configuration on the tree. The catalog bundle mes-platform carries dispatch, OEE, batch, and quality; mes-oee-reference is the separate OEE reference. The model follows ISA-95. The operator opens them as dashboards of one app (?mode=operator&app=mes-platform). MES · platform reference.

The shop floor’s side of ERP. Orders, batches, yield, and what the shop has to tell the office. Catalog bundles cover ISA-95 contours for a core plant, pharma, printing, APS, and CMMS. Where a demo exchanges data with an accounting system, the bundle says the exchange is simulated. A live 1C or SAP connector is not shipped.

Twins and ready sites. An INSTANCE hub is a twin with its own logic: a farm, a warehouse, a store, a tank farm, a CHP. The operator UI for those is a React app at /apps/<appId>/, built outside this repo and installed as a ui-pack. The pictures above are that gallery. Live catalog: marketplace.ispf.ai.

People, tenants, other sites. TOTP, rights down to a variable, separate tenants, an audit log. Federation when a second site has to see the first. Helm, and an ARM image when the box is in the field rather than in the server room. security · deployment.

Assistant. You write the task in the console. The agent lays out devices, screens, and rules, shows each step, and waits for an OK before it writes. 67 regression scenarios cover that path. ai-development.

How a solution leaves the laptop. ispf pack or a bundle deploy. Or Application Git: pull a release, push a branch, open a PR (ADR-0063). Logic stays in hub functions and binding rules. Widgets only display variables.

A code-verified read against Ignition, PI, Opcenter, and the rest is the competitive scorecard (about 8.0 / 10 as of the September 2026 audit). First hour on the product: learn · по-русски.

Why people install it

Job Where it lives
One address space for tags, screens, and processes Object tree, CEL bindings
Operator screens, not only a protocol gateway Explorer, operator mode, SCADA mimics
An alarm that starts real work Alert rule → correlator → BPMN
A plant solution without a fork of the server Bundle + ui-pack
The tree in git ispf pack, or Application Git
A stack you can patch yourself Java 25, Spring Boot 4, React 19, PostgreSQL

Quick start

All-in-one release (Windows / Linux / macOS)

Portable zip (JDK 25): download ispf-*-portable.zip from GitHub Releases, unzip, then start.bat (Windows) or ./start.sh (Linux/macOS).

Uses an embedded H2 file DB (no PostgreSQL to install). After first start: data/ispf-local.mv.db next to the JAR.

Container (GitHub Packages):

docker pull ghcr.io/iot-solutions-ru/ispf-server:latest
docker run --rm -p 8080:8080 -v ispf-data:/opt/ispf/data ghcr.io/iot-solutions-ru/ispf-server:latest

Open http://localhost:8080 — login admin / admin. Operator HMI: http://localhost:8080?mode=operator

From source (dev)

Requirements: JDK 25, Node.js 20+, Docker optional (Postgres/NATS/Keycloak for fuller stacks).

# API — local profile (H2, no OAuth; syncs a small set of dev driver packs)
./gradlew :packages:ispf-server:bootRun --args="--spring.profiles.active=local"

# Web console (separate terminal)
cd apps/web-console && npm install && npm run dev
URL Purpose
http://localhost:8080 Admin console (all-in-one JAR)
http://localhost:5173 Admin console (Vite dev)
http://localhost:8080?mode=operator Operator HMI (all-in-one JAR)
http://localhost:5173?mode=operator Operator HMI (Vite dev)
http://localhost:8080/api/v1/info Version / capabilities
http://localhost:8080/actuator/health Health

Full guide: Getting started · Начать работу

Avoid a cold ./gradlew test on first day — it builds the full driver matrix and can take a long time. Prefer bootRun + the console, or ./tools/ci/pr-fast.sh / .\tools\ci\pr-fast.ps1 before a PR.

Demo objects (local profile)

Path Purpose
root.platform.devices.demo-sensor-01 Virtual sensor + alarm
root.platform.dashboards.demo-sensor HMI dashboard
root.platform.alert-rules.temperature-threshold-exceeded CEL alert rule
root.platform.correlators.alarm-handler-on-threshold-event Correlator → workflow
root.platform.workflows.demo-alarm-handler BPMN demo
root.platform.devices.snmp-localhost SNMP agent

Documentation

Start here: Learn ISPF · Try ISPF (≈15 min) · Docs hub by role

English (canonical) Русский
Learn learn.md learn.md
Hub docs/en/readme.md docs/ru/readme.md
Product product.md product.md
Getting started getting-started.md getting-started.md
Architecture architecture.md architecture.md
Drivers drivers.md drivers.md
Applications / Git applications.md applications.md
Solution developer solution-developer-guide.md solution-developer-guide.md
API api.md api.md
License license.md license.md
Roadmap roadmap.md roadmap.md

More: operator guide · anti-patterns · glossary · ADRs · doc hub

Repository layout

iot-solutions-platform-framework/
├── packages/           # Core, CEL, drivers, server (Spring Boot)
├── apps/web-console/   # React admin + operator UI
├── examples/           # demo-app, MES/HVAC references, labs
├── docs/en · docs/ru   # Canonical EN + Russian docs
├── site/               # Project GitHub Pages (EN + RU)
├── deploy/             # Compose, VPS, Grafana, edge
└── docker-compose.yml

License

GNU Affero General Public License v3.0 — platform (ispf-server, web-console, core packages).

Optional Enterprise dual-license: LICENSE-COMMERCIAL.md · commercial licensing.

Driver packs and application bundles may use separate terms. Details: license · NOTICE.

Contributing & feedback

Issues and PRs welcome — especially driver/HMI bugs, docs fixes, and real-plant pilot feedback.

Notable product changes go in CHANGELOG.md ([Unreleased] until the next version bump). See CONTRIBUTING.md.

If ISPF helps your project, a GitHub ★ helps others discover it. For OT / integrator discussions, open an issue with your stack (protocols, historian size, HMI constraints).

Releases

Packages

Used by

Contributors

Languages