Fostrom IoT Cloud Platform

website·Indexed 32 days ago

https://fostrom.io

A developer-focused IoT Cloud Platform designed to be secure, structured, and programmable. Fostrom provides tools for managing device fleets, defining packet schemas, and creating programmable Actions using JavaScript. It supports device communication via HTTP and MQTT, and offers SDKs for Python, JavaScript, and Elixir.

Tokens
15.7K
Snippets
50
Records
132
Agent score
64%

What's inside Fostrom

  1. Overview of Fostrom IoT Platform

    Fostrom is a developer-first IoT Cloud Platform designed to simplify the plumbing of connected systems. It provides a set of core primitives to keep device-side code minimal while managing logic and operations in the cloud. Key features include:

    • Device SDKs: Available for Python, JavaScript, and Elixir, with additional support for HTTP and MQTT.
    • Typed Schemas: Payloads are validated on ingress based on defined schemas to ensure data consistency and prevent device-side exceptions.
    • Programmable Actions: JavaScript-based cloud logic that triggers on incoming device messages to queue mail to other devices or trigger webhooks.
    • Sequential Mailboxes: Per-device mailboxes that ensure predictable ordering and provide a natural back-pressure mechanism for resource-constrained devices.
    • Fleet Observation: A dashboard for monitoring connectivity, inspecting all sent packets with filtering, and tracking device health.
  2. Overview of Fostrom IoT Cloud Platform

    Fostrom is an IoT Cloud Platform designed for connecting and monitoring devices such as microcontrollers and single-board computers. Key capabilities include:

    • Sending datapoints and messages to the platform.
    • Triggering actions based on incoming messages.
    • Executing effects, such as queuing messages in device mailboxes or triggering webhooks.
    • Using pre-defined structured schemas for datapoints and messages to reduce runtime exceptions and bugs.
  3. Overview of Fostrom IoT Cloud Platform

    Fostrom is a secure, structured, and programmable IoT Cloud Platform designed for developers to monitor and control fleets of devices, ranging from small home projects to large-scale production environments. It supports various hardware, including microcontrollers and single-board computers, via dedicated SDKs.
  4. Overview of Fostrom Device Communication Protocols

    Fostrom supports multiple protocols for device communication, all of which require TLS encryption (MQTTS, WSS, and HTTPS). While direct protocol use is supported, using the official Device SDKs (available for JavaScript, Python, and Elixir) is highly recommended to avoid implementing base functionality manually.
  5. Understand Fostrom Device Agent architecture

    All Fostrom Device SDKs rely on the Fostrom Device Agent, a lightweight Rust binary. The SDK automatically downloads and starts the Agent upon package installation or first run.

    Connectivity flow:

    1. The Device SDK communicates with the Agent via HTTP over a local UNIX socket.
    2. The Agent maintains a persistent connection to Fostrom using a proprietary TCP+TLS protocol called 'Moonlight'.
    3. The Agent sends heartbeats independently of the user program to facilitate quick restarts and background reconnection.
  6. Send and receive data using Packets

    Packets are the actual data payloads sent to or received from Fostrom. Every packet must be associated with a specific Packet Schema name.

    • Ingress: When sending a packet, the device specifies the schema name; Fostrom processes and stores the data according to that schema.
    • Egress: Messages queued in a device's mailbox (often via Action Runs) include the schema name, allowing the device to safely extract fields.
  7. Send and process data packets in Fostrom

    After creating a packet schema, devices can send datapoints or exchange messages. Fostrom processes incoming packets based on the defined schema. If a field cannot be cast to the correct type, it is marked as a 'bad field' and the entire packet is currently dropped and logged. Successfully processed packets enter the packet stream, where they are visible in the fleet's Packets tab and used to trigger Action Runs.
  8. Understand Fostrom Actions and their capabilities

    Actions are small JavaScript snippets that make Fostrom programmable by reacting to real-time events (triggers) and producing side effects. They allow developers to close the loop between incoming telemetry and outbound control, creating autonomous systems. Currently, Actions are triggered by incoming Message Schemas where the Direction is set to 'Inbound' or 'Both'. Outbound messages generated by Actions are queued to a device's mailbox and processed sequentially to prevent device overload.
  9. Connect physical hardware as Fostrom Devices

    A Device is a digital twin (virtual representation) of physical hardware. Upon creation, Fostrom provides connection credentials required for the device to connect via SDKs or supported protocols.

    Connected devices interact with the platform by:

    • Sending heartbeats, datapoints, and messages.
    • Utilizing a dedicated device mailbox to receive incoming messages reliably.
  10. Manage and collaborate using Organizations

    Organizations allow you to group multiple fleets together and collaborate with other users. Fleets from different regions can reside within the same organization. You can create and switch between organizations using the dropdown menu in the top bar after logging in.
  11. Understand Fostrom Fleets

    Fleets are the primary organizational containers in Fostrom. They provide complete isolation for IoT projects; all devices, packet schemas, actions, and data within a fleet are isolated from other fleets. A fleet should be used as a unifying layer for a single IoT project.
  12. Check Fostrom Device Agent OS and Architecture support

    The Fostrom Device Agent supports the following environments:

    • Linux: ARM64 (e.g., Raspberry Pi), AMD64 (Intel/AMD servers), ARMv6 (Raspberry Pi Zero), and RISCV64 (e.g., MilkV Duo). Linux builds use statically linked musl for compatibility with most distributions, including Alpine Linux.
    • macOS: Delivered as a Universal Binary supporting both ARM64 (Apple Silicon) and AMD64 (Intel).
    • FreeBSD: AMD64 (Experimental support).