live · Platform · HOLOIN OS

For the person who has to run all of it, and the IT team that has to keep it running.

One platform. This much of it, today.

Six kinds of asset today, one more in development, one product: every device lands on one pipeline, belongs to one place, is judged by rules you can read, and ends up as one list of what needs a person. On servers you own.

HOLOIN · the stack · what comes in, where it runs, what it serves
WHAT COMES IN
to the servers inside, through ports your IT opens
  • MQTT
  • HTTP
  • Monitoring-tool alerts
  • LoRaWAN sensors
  • CoAP
  • NB-IoT (LwM2M)
  • OCPP
  • Sparkplug B
  • Cellular trackers
through the Field Agent on your OT network · connects out only
  • BACnet
  • Modbus
  • OPC UA
  • KNXbeta
  • SNMP
  • SunSpec
  • MTConnect · PLC links
solid: proved by an acceptance run · dashed: in development
YOUR SERVERone installation per customer · your datacentre, or one we run for youWeb entry · TLSsingle sign-on · two-step sign-in · roles as named permissions · one addressfor the web app and the phone app · API keys with the scopes you chooseThe servers, insidetracker and LoRaWAN network servers: install options, on only where chosenOCPP, HTTP and MQTT in the app itself · nothing to buy or run beside the installMODULES · licensed one by one, on one contractFleetAgricultureBuildingsRemote sitesEnergyEV chargingSmart factoryyour next oneHOLOIN OSPipelineTwinRulesMemoryone pipeline for every protocol · one home per device ·commands done only on evidencerules you can read · nothing learned acts on a device ·audit log append-only, kept 7 years or moreour access: off until your administrator consents,time-boxed, every action loggedPostgreSQL · your datatime-series inside the same database · nightly backup · monthly restore drilldriver data exported or erased, user data erased, on request ·backups you can read without uspg_dump, CSV, GeoJSON, glTF, OpenAPI — no lock-inOut, on your termssigned events to the receivers you name, retried on a schedule,replayable · reports as CSVyour ERP, CRM or ticket tool subscribes; HOLOIN stays the recordmetrics for your own monitoring · a support bundle with no personal data in itno telemetry out: proved with the network sealed on every releaseEvery box is a part of the product;"your next one" is the module contract, not a promise.
WHAT IT SERVES
people, through the web entry
  • The web appoperators, managers, IT
  • The phone appdrivers, technicians, managers
places, one twin each
  • Vehicles, drivers, yardsFleet
  • Farms, fields, zonesAgriculture
  • Buildings, floors, rooms, racksBuildings
  • Sites and regionsRemote sites
  • Plants and arraysEnergy
  • Depots and chargersEV charging
  • Machines and linesSmart factory
your other systems, from the out box
  • Webhook receivers
  • ERP · CRM · ticket tool
  • Your monitoring

The stack, as it runs. What comes in on the left, by protocol; one server in the middle, yours — the web entry, the bundled servers, the modules on one contract, HOLOIN OS and your data; what it serves on the right. The locks are where they sit: at the door, in the log, on the data, on the boundary, on our own access. On a server we run for you, our access to your data is off by default: your administrator grants it, for a set time, and every action is logged against both identities.

1The whole thing, in one picture

Device to decision, in six steps.

Every box is a part of the product; nothing in this picture is a plan. Readings move left to right; what a person decides moves back.

Trackers · sensorscellular · LoRaWANControllers · PLCsBACnet · Modbus · OPC UAChargers · pushersOCPP · HTTP · MQTTThe servers, insidetracker server · LoRaWANnetwork server · OCPPserver · Field Agenton the OT networkOne pipelineevery packet kept firstin order, once, decodedby the product's ownmeasurementsOne twin per placea vehicle, a room, a zone,a site, a plant, a depotlive over a socket;one device, one placeRulesyou can readalarms · work orderscommands, done onlyon the device's reportPeople, and outweb · phone · events · APIa command goes back the same way, and completes only when the device reports it
DevicesYours, any model with a published map; registered once, in HOLOIN.
The servers, insideThe radio and charger servers and the Field Agent ship in the install, switched on when you need them; nothing to buy or run beside it.
One pipelineEvery packet is stored before anything is done with it, so nothing is lost; it is replayable while the raw packet is kept, 30 days by default.
One twin per placeA device belongs to one place; the place is the record and keeps the history.
RulesTrigger, condition, actions: readable; a rule on readings can be tested against the last 24 hours (up to 7 days) without writing anything; switched on per company.
People, and outOne list of what needs a person; the technician's phone; signed events and a documented API for your other systems.
2How readings arrive

Every protocol lands on one pipeline.

A tracker's fix, a LoRaWAN uplink, a BACnet point, a charger's meter value and a JSON push all become the same thing: a packet, stored first, then decoded by the measurements the device's product declares. The pipeline is the same code for all of them. Adding a protocol is a driver or a parser, never a change to the path a reading takes — which is why every kind of asset shares one product.

MQTTHTTPBACnetModbusOPC UAKNX · betaSNMPMonitoring-tool alertsSunSpecLoRaWAN sensorsCoAPNB-IoT (LwM2M)OCPPSparkplug BCellular trackers

Each protocol appears here only when its acceptance run passed; the list is generated from the facts file, not typed.

kept firstEvery packet is stored before it is understood. A packet the product can't place is kept with the reason, and can be replayed once the device or its map exists.
in orderOne device, one queue. A late fix never overwrites a newer one; a duplicate is recognised and counted, not stored twice.
live or historyA reading older than its source's window is history. It fills the past and recomputes what it falls into, and never fires a rule or completes a command.
evidenceA command completes only on the device's own report. "Sent" is not "done"; the twin says which.
3The twin

One device, one place. The place is the record.

Vehicle · room · zone · site · plant · depot

Every kind of place, one contract.

A vertical is a module that tells the platform what its places are, which device roles they take and what to show. The twin itself is the platform's: readings judged against each measurement's lines, status rolled up to the floor, the field, the region; live updates pushed over a socket; history by the minute, hour or day. What isn't measured is shown as unknown, never as zero.

Why it matters A new kind of asset is a module on the same twin, not a second product.
Room 002 · Meeting · its twin
CO₂ · reported by the room's sensor
1,620ppm
against the line you set: critical · from 20:27:13
critical
placedClimate sensor · in Room 002 since it was placedreadings before that moment are stored, not counted for this roomone place
livetwin.update pushed on each reading to everyone watchingthe floor's and the building's status recomputed and pushed toosocket

From the demo run. Room 002's twin, the reading judged against its line, the device placed in one room, the update pushed as it arrived.

4Rules and actions

Automation you can read. Commands you can prove.

Trigger · condition · actions

A rule is a sentence, and the builder shows it as one.

When a reading arrives, a position changes, a schedule ticks or an event fires; if a condition holds (a threshold, a state change, a time window, a module's own check); then alarm, notify, open a work order, send a command. Shipped templates give most modules a start; a rule on readings can be tested against the last 24 hours (up to 7 days) without writing anything. Escalation is the rule's; quiet hours, the rule's or the person's, hold back email only.

Why it matters The person who runs the place can read why the alarm fired, and switch the rule off.
Rule · CO₂ critical → work order
When a reading arrives for any room, if CO₂ is past 1.5 × the room's ceiling for 5 minutes, then raise a critical alarm, open a work order and notify the managers.
shippedshipped on for every company with a buildingon

The shipped rule. The CO₂ template as the builder shows it.

Operate · an alarm
The Room 002 CO₂ alarm, critical and active, with Create work order.
The alarm in the demo. The rule’s CO₂ alarm for Room 002 · Meeting: critical, active, and “Create work order” on it.
Commands

"Sent" is not "done".

A command to a device is refused with a reason when a rule, a lock or a read-only setting says so, and otherwise sent through the device's own server. It completes only when a later reading from the device proves it — a valve reporting open, a generator reporting running, a charger's meter under its limit. No proof in time is a failure, never a quiet success. Every outcome is logged.

Why it matters Nothing in the product claims it did something to a machine on the strength of having asked.
Commands · a generator start
gridMains failed20:12:32
alarmAlarm raised20:12:33
sentStart sent20:12:33
outcomeGenerator start · completed
runningRunning, read back from the controller20:12:35

From the demo run. A start counted only when the controller reported it running.

5What it learns

Arithmetic you can read. No model.

The twin remembers what each measurement usually does, notices what tends to follow what, and proposes. What it proposes comes as a recommendation with its evidence and an expiry; nothing learned acts on a device.

Usual for this hour of the week

median · spread · 168 slots

Its hour-of-week usual over the last 28 days, shown from the second week; beside every number as "usual for Tuesday 10:00", with the spread.

Trends, and when a line is reached

least squares on daily medians

A date "at this rate" only when the fit is good and the line moves the wrong way; otherwise nothing.

Dependencies it noticed

what follows what, how often, how late

Proposed when one event follows another often enough to be unlikely by chance; a person confirms it, and it never alarms by itself.

"What if this fails"

declared edges · observed edges · past episodes

A scenario walks the wiring and what the twin has seen, in order, with how sure it is; the one way out is a work order a person opens.

Lifetime

rated · observed · counted, labelled apart

A maker's rating where a datasheet gives one, wear from its own trend, duty counted from its own readings — never averaged into one number; the earliest date shows, naming its source.

Rules proposed from your own failures

backtested over the twin's history

A line that would have caught past failures, with how many and how early; confirming it makes an ordinary rule.

Each item is marked live only once a release's acceptance run has proved it; the ledger below shows the state today.

6In and out

Your other systems subscribe. HOLOIN stays the record.

In

  • Sourcesa token per source: HTTP push, MQTT publish, the bundled servers, a monitoring tool's alerts
  • Field mapsplace any JSON by path, preview on a pasted sample, replay what couldn't be placed
  • Your asset databaseread, diffed, applied after review; never written to
HOLOINthe twin, the rules, the record — on your server

Out

  • Events, signeda subscription per receiver; every delivery signed, retried on a schedule, then marked dead — every delivery replayable
  • The API, documentedkeys with scopes you choose; the OpenAPI document published with each release, served by the install when switched on
  • Reportswhere a module has them, as a table or a CSV, every run logged

An ERP, a CRM or a ticket tool takes HOLOIN's events and reads its API the same way a webhook receiver does; no ERP, CRM or ticket tool has a connector of its own, and none is claimed here.

7Running it

Built to be run by your IT team.

One bundle, one script

Images, compose file, installer and guide in one archive; ready in 2 min 42 s on the acceptance box (run 39194860273). No internet needed to install; the radio servers are profiles you choose at install.

Backups that are tested

Nightly, with a monthly restore drill; a failed backup or drill is an alarm in the product. A restore is proven on every release.

Sign-in your way

Single sign-on through your identity provider; two-step sign-in with codes; roles as named sets of permissions, the same vocabulary as API keys.

Support access with consent

Our access to your data is off by default: your administrator grants it, for a set time, and every action is logged against both identities.

An audit log that can't be edited

Every change, by whom, from where; append-only in the database itself, kept at least seven years, never less, even from its own administrator. A driver's data exported or erased, a user's erased, on request.

Watched like any service

Health and readiness endpoints, metrics for your monitoring, structured logs with no personal data, a support bundle your IT team can read before it leaves.

8Where it runs

One server. Everything inside it.

HOLOIN installs on one Linux server with Docker, in your datacentre or on one we run for you in the country you choose. The database, the app (with its charger and MQTT endpoints), the radio servers — profiles you choose at install — the web entry and the backups are containers in one compose file; the Field Agent usually runs on your OT network, because that is where the controllers are, and it only ever connects outward.

What that buys you is boring on purpose: no cloud account, no managed service, no part of the product that needs the internet to work. What it doesn't buy yet is said plainly below.

The applicationone process today; the ingest capacity measured and publishedlive
PostgreSQL with time-series storageyours, backed up nightly, restorable anywherelive
The tracker serveran install option; pinned, proved on every releaselive
The LoRaWAN network serveran install option; pinned, proved on every releaselive
The NB-IoT serveran install option; pinned, proved on every releaselive
The Field Agenton the OT network, outbound only, read-only where the module says solive

What we have measured.

Only numbers from runs, with the conditions they ran under. On a 2 vCPU / 8 GB cloud runner, one server kept up with 33.3 packets/s — 500 trackers reporting every 15 seconds, processed within 1.5 seconds (p99) — and fell behind at 42 packets/s. When the load stopped, every packet accepted was processed; none was refused.

500 trackers in 500 vehicles, 20 geofences, through the proxy over TLS — every packet through decoding, positions, geofences and rules; each rate held for 5 minutes (the first for 3). Hardware: a 2 vCPU / 8 GB cloud runner; run 36822098734 on commit cbb4e63, 2026-10-01. CPU is the app / database share of one core.

Each tracker reports everyRateKept upReceipt → fully processedDashboard reads, p95CPU
30 s17 packets/syesp50 44 ms · p95 121 ms · p99 191 ms90 ms33 % / 31 %
20 s25 packets/syesp50 58 ms · p95 212 ms · p99 1.1 s131 ms53 % / 52 %
15 s33.3 packets/syesp50 140 ms · p95 718 ms · p99 1.5 s243 ms72 % / 76 %
12 s42 packets/sno — 489 waiting at the endp50 17 s · p95 24 s · p99 27 s3.9 s91 % / 86 %
10 s50 packets/sno — 3,456 waiting at the endp50 54 s · p95 83 s · p99 85 s4.1 s90 % / 87 %

After the last stage, the queue drained to zero in 63 seconds: all 48,000 packets were accepted and processed, none refused. Storage: ≈ 2 KB of database per packet (99 MiB for 48,000 packets). The install guide sizes installations at 25 packets/s, below the measured ceiling. In tracker terms — arithmetic, not measured, since 500 devices were tested: 33.3 packets/s is about 1,000 trackers reporting every 30 s; the 25 packets/s planning figure about 750.

MeasuredResultConditions
Packet-to-screen latencymedian 56 ms · p95 92 ms · max 183 msFrom the ingest request to the update arriving on the web app’s live channel; one tracker, one packet a second, 300 packets, none lost — on one laptop (16 GB RAM), the demo installation, otherwise idle.

Load results above this are published as we measure them.

9The whole list

Everything in the product, by layer, as the product reports it.

How readings arrive

every protocol lands on one pipeline
LoRaWANCoAPHTTPMonitoring-tool alertsLwM2MMQTTOCPP 1.6 · 2.0.1Sparkplug BCellular trackersBACnetModbus TCPOPC UAKNX · betaSNMPSunSpec

The twin

each device belongs to one place
VehiclesFarms, fields, zonesBuildings, floors, roomsRemote sitesEnergy plantsCharging depotsThe IT room’s equipmentWhat powers and connects whatThe path to every device, and the first broken hop when one goes quietThe BMS, mapped in — verified against a simulated BMSLive over a socket, history on demandDependencies, upstream cause, blast radius

Rules and actions

yours to read, change, switch off
Thresholds, schedules, events, time windowsAlarms with escalation, quiet hoursWork ordersCommands completed only on evidence

What it learns

arithmetic you can read, no model
Usual for this hour of the weekHow much the twin knows, shownDependencies it noticed, for you to confirmLifetime: observed from wear, counted from duty, rated where a maker’s datasheet gives it — each labelled apart“What if this fails” scenariosRules proposed from your own failures, backtestedTrends, and when a line is reached

Running it

for your IT team
One install bundle, no internet neededBackups, restore, monthly drillTwo-step sign-in · single sign-onSupport access with consent, every action logged

The protocols and the kinds of asset come from the product's own report of itself: what a release lists, this page lists. The rest is traced to the product's code, and each item links to what shows it. An item marked in development is not yet live: it is being built, or built and not yet through the run that marks it live.

10The way in

See it running on your kind of asset.

I run the assets

Fifteen minutes on your kind of asset — a truck, a room, a site, a plant, a depot — and the one list behind all of them. Your devices if you bring their maps.

I run the servers

The install guide and the API reference are public. Read them before we talk.

Read the install guide →