Monitor and control fleets of devices with easy-to-integrate Device SDKs, Type-Safe Schemas, and Programmable Actions.
from fostrom import Fostrom
fostrom = Fostrom({
"fleet_id": "<fleet-id>",
"device_id": "<device-id>",
"device_secret": "<device-secret>",
})
fostrom.start()
while True:
readings = readSensors()
fostrom.send_datapoint("climate-metrics", readings)
if readings["pm25"] >= 50 or readings["pm25"] <= 10:
fostrom.send_msg("air-quality-alert", {
"pm25": readings["pm25"]
})
sleep(30)
let start = false, stop = false
if (payload.pm25 >= 50) { start = true }
if (payload.pm25 <= 10) { stop = true }
if (start || stop) {
// Control the Air Purifier State
fostrom.sendMail('air-purifier',
'set-state', { state: start })
// Send an alert to Discord
fostrom.triggerWebhook('discord-alert',
start ?
`Starting Air Purifier`
: `Stopping Air Purifier`
)
}
defmodule AirPurifier.Handler do
use Fostrom.Handler
def handle_mail(%{
name: "set-state",
payload: %{"state" => state}
}) do
case state do
true -> start_air_purifier()
false -> stop_air_purifier()
end
end
end
Validate every payload and keep devices safe from unexpected shapes.
Run JavaScript in response to messages, test in place, and orchestrate real-world effects.
Sequential device mail with predictable ordering.
Inspect packet history, activity graphs, and fleet health in one place.
Python, JavaScript, and Elixir SDKs with a tiny integration surface.
SDKs, HTTP, and MQTT for every device and gateway.
Pick the closest region to keep connections low-latency and power-efficient.
Define schemas for datapoints and messages so payloads are validated on ingress and egress.

Write JavaScript code that reacts to incoming messages and triggers real-world effects.

Each device processes mail in order, at its own pace, with built-in back-pressure.

Inspect packet history, device health, and action effects with full fleet context.

Collect telemetry, automate with Actions, and export data to analytics pipelines.
Coordinate systems like pumps, lights, and climate control in large farms with ease.
Stream sensor data reliably and trigger alerts the moment thresholds are crossed.
Monitor research experiments on a unified dashboard and get clean data for analysis.