Self-hosted platform for devices, HMI, alarms, historian, and workflows — one object tree, one API, one UI.
Website: ispf.ai · Repo: github.com/iot-solutions-ru/ispf
Most SCADA stacks glue together OPC, historian, HMI, alarms, and workflow as separate products. ISPF puts them on a hierarchical object tree: a device, dashboard, alert rule, correlator, and BPMN workflow are all nodes with the same API.
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.
| You want… | ISPF gives you… |
|---|---|
| One model instead of tag soup + side systems | Object tree + CEL bindings |
| Real HMI, not only a device gateway | Admin Explorer + operator mode |
| Alarms that do something | CEL alert rules → correlators → BPMN |
| Industry solutions without forking the core | Declarative bundles |
| Modern self-hosted stack | Spring Boot 4, Java 25, React 19, PostgreSQL/TimescaleDB |
Honest positioning: closer to an open Ignition-class application platform than to a pure MQTT broker or Node-RED flow tool. See the competitive scorecard.
- Object tree — typed variables, events, functions; REST + WebSocket
- ~58 drivers — Modbus, OPC UA, MQTT, SNMP, JDBC, and more (drivers)
- HMI — dashboard builder, charts with variable history, SCADA mimics
- Automation — alert rules, correlators, BPMN workflows as tree nodes
- Applications — bundle deploy, reports, BFF functions, scheduler
- Storage — H2 for local; PostgreSQL + TimescaleDB for prod; Redis/NATS optional
- AI-assisted solution tooling — agent / generator paths in docs (ai-development)
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:latestOpen http://localhost:8080 — login admin / admin. Operator HMI: http://localhost:8080?mode=operator
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 teston first day — it builds the full driver matrix and can take a long time. PreferbootRun+ the console, or./tools/ci/pr-fast.sh/.\tools\ci\pr-fast.ps1before a PR.
| 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 |
Start here: Try ISPF (≈15 min) · Docs hub by role
| English (canonical) | Русский | |
|---|---|---|
| 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 |
| 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 · glossary · ADRs · doc hub
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
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.
Issues and PRs welcome — especially driver/HMI bugs, docs fixes, and real-plant pilot feedback.
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).



