New · scheduled PDF and CSV reports

The platform between your machines and your people.

Connect devices, decode any payload, watch every reading against its limits and act on it — with each customer in its own database schema, and the whole stack in about 1 GB.

Plant overview

Critical Overpressure on CMP-04 Compressor · unacknowledged for 2m

Line 1 discharge at 9.42 bar, 0.22 over the 9.20 limit, since 09:11:04.

Intake flow
1 284 m³/h
+2.4%
00:0010:1323:59
Line 1 pressure Critical
9.42 bar
Site power
612 kW
Devices reporting
5 of 6
The platform

Every part, already built.

These are the real screens. What you see here is what your team uses on day one.

Connect

A credential per device, its status at a glance

MQTT with its own topic list, or HTTP with an ingest key.

All
148
Online
142
Degraded
2
Offline
4
CMP-04 CompressorPlant A ▸ Line 1Online12s
PMP-02 Feed pumpPlant A ▸ Line 1Degraded3m
TNK-01 Buffer tankPlant A ▸ Line 1Online40s
Decode

Any payload, in JavaScript

Runs in a sandbox. Change it without a deploy.

function process(bytes) {
return {
pressure: int16(bytes, 0) / 100,
oilTemp: int16(bytes, 2) / 10,
}
}

03AE0312 → pressure 9.42 · oilTemp 78.6

See

Dashboards with the limits on the chart

17 widget types, live while the page is open.

9.42 barAbove critical
Critical 9.20 Warning 8.50
Automate

When a limit is crossed, it acts

A policy says what good, warning and critical mean. Bind it to a measure; a trigger says who to tell and what to run.

Policy
Warning above 8.50 · critical above 9.20 bar
Bound to
CMP-04 discharge pressure
Trigger
On critical: email on-call, in-app · run “Unload CMP-04”
CriticalCMP-04 overpressurepeak 9.48 · 2m

Each customer in its own schema

Every organization and branch gets a dedicated database schema. Roles per branch, access per asset.

Scheduled reports

PDF and CSV from templates with real data, emailed on a schedule in the branch's time.

The whole stack in ~1 GB

Our cloud, a dedicated instance, or Docker on your own server.

REST API with scoped keys

Every route in the OpenAPI document. Keys per branch, with the permissions you pick and an expiry.

IDs you can copy

Every device, topic and key in monospace with a copy button. The last 100 messages on each device.

Your language, your brand

English, Spanish and Thai in the app. Your logo, colours and domain if you resell it.

How it works

From a reading to a fix.

  1. 01The device publishes.The broker checks its credential on every login; it may only publish on its own topics.
  2. 02A process reads it.Your JavaScript turns bytes into fields and can keep state per measure; a measure only accepts readings from its own device.
  3. 03It's stored and shown.Time series in the branch's own schema, pushed to every open dashboard.
  4. 04A policy evaluates it.Each binding moves between good, info, warning and critical. Leaving good opens one incident; its triggers notify by email or in-app.
  5. 05An action runs.A webhook to your systems, or a command back to the device — only to your organization's own devices.
Deploy

Where it runs

Option Shared cloud Dedicated Your server
Run byKowisteKowisteYou
Data locationKowiste regionA region you chooseWherever the server is
IsolationSchema per organization and branchOwn instanceOwn hardware
Your brand and domain—IncludedIncluded
Start Go to platform Contact us Contact us

Connect your first device today.

One organization, one branch, one device. Grow from there.