cloudparts

Thinger.io

An IoT platform where devices keep a connection open to the server and expose named resources that the server reads, writes and stores, with dashboards, data buckets and an MQTT broker built in.

Type
Commercial product
Made by
Internet of Thinger S.L.
License
Proprietary server; device client libraries and IOTMP implementations are MIT
Facts checked
23 October 2026

What it is

Devices connect to a Thinger.io server over IOTMP, the company’s own binary protocol, on a persistent TCP, TLS or WebSocket connection, with values encoded in PSON, a compact JSON-like format. With the MIT-licensed client libraries for Arduino, ESP-IDF, Zephyr and Linux, a device declares resources, such as a sensor to read, a pin to switch or a value to stream, in a few lines of code. The server subscribes to those resources and pulls data only when something needs it, and every resource is also reachable through the server’s REST and WebSocket APIs. Devices that can’t run the libraries connect over MQTT 3.1 or 3.1.1 to the built-in broker on ports 1883 and 8883, over HTTP callbacks, or through Sigfox and LoRaWAN integrations.

On the server, data buckets store time series from device resources, MQTT topics or HTTP calls; dashboards show live and stored values; alarms and endpoints (webhooks, email, SMS) react to events; products group devices of one type with shared properties, buckets and scripts; and OTA updates push firmware. Plugins such as Node-RED, Grafana and Prometheus run next to an instance, and an MCP server lets AI clients read device data. There is a free shared cloud account for prototyping. Paid Private Cloud plans run a dedicated instance on AWS in Europe, the US or Asia, from €45 a month billed yearly for 100 devices up to €319 for 2,500, and on-premise licences install the server with Docker Compose next to MongoDB.

Why teams pick it

  • Little device code: declare a resource once and it can be read from the console, dashboards, buckets and the REST API, with TLS, reconnection and OTA handled by the library
  • One product covers connectivity, storage, dashboards, alarms, OTA and white-labelling, so a small team can ship a connected product without assembling a stack
  • Works with many boards, from ESP32 and Raspberry Pi Pico W to Arduino cellular boards, plus MQTT, HTTP, Sigfox and LoRaWAN devices
  • Flat, published prices for dedicated instances, with unlimited data points within the instance’s disk

Watch out for

  • The docs call it open source, but the server is a licensed Docker image that needs a licence token; only clients, plugins and tools are on GitHub under MIT
  • IOTMP is Thinger.io’s own protocol: its IETF Internet-Draft is an individual submission that has expired, so few other servers speak it
  • Paid tiers cap devices per instance (100, 1,000 or 2,500 on Private Cloud) and run on one dedicated server, and the free cloud’s limits aren’t published
  • The MQTT broker supports only MQTT 3.1 and 3.1.1, and a bucket fed by a streamed resource stores at most one value per minute

Alternatives

What all iot device messaging have in common →Compare side by side →

How it fits with other technologies

An ESP32 that exposes an LED and a sensor value as resources · cpp

#include <ThingerESP32.h>

#define LED_PIN 2  // built-in LED of most ESP32 DevKit boards

ThingerESP32 thing("username", "deviceId", "deviceCredential");

void setup() {
  thing.add_wifi("wifi_ssid", "wifi_password");

  // input resource: the platform switches the LED
  thing["led"] << digitalPin(LED_PIN);

  // output resource: the platform reads it on demand or samples it into a bucket
  thing["millis"] >> outputValue(millis());
}

void loop() {
  thing.handle();  // keeps the IOTMP connection alive and answers requests
}

See it in a real stack

No architecture uses Thinger.io yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2014–2026

Thinger.io began as a side project of Álvaro Luis Bustamante while he was a researcher at Universidad Carlos III de Madrid. He wrote the first code in 2014 and the project started in earnest in early 2015, when the Arduino client library went up on GitHub. He had found existing platforms hard to use or tied to particular hardware, and asked why a device should need an operating system or a scripting language just to be controlled online.

What started as a backend to read data from and control devices in real time grew into a general platform with buckets, dashboards and a rule engine. In 2018 the project became a company, Internet of Thinger S.L., which released an enterprise version and now sells private cloud, on-premise and white-label instances while keeping a free community cloud. In 2026 Bustamante submitted IOTMP, the protocol underneath the platform, to the IETF as an individual Internet-Draft.

Why it’s built this way

The server subscribes to device resources
Instead of devices pushing every value, the server asks for what it needs, when it needs it. That keeps bandwidth and load low and lets one instance handle thousands of devices.
Its own binary protocol, IOTMP
Generic protocols such as MQTT leave request and response, resource discovery and streaming to each application. IOTMP builds them in, with a compact encoding for microcontrollers.
Resources declared in device code
A resource defined once with << or >> can then be used from the console, dashboards, buckets and the API, so firmware doesn’t change when the way data is used changes.
A rebrandable, dedicated instance per customer
Companies building connected products want their own domain, branding and isolated data, so paid plans deploy a private server rather than accounts on a shared one.

Timeline

  1. 2014

    First lines of code, written by Álvaro Luis Bustamante

  2. 2015

    Project starts; Arduino client library published on GitHub

  3. 2018

    Becomes a company and releases an enterprise version

  4. 2026

    IOTMP submitted to the IETF as an individual Internet-Draft

Sources11 · facts checked 23 October 2026

Improve this page on GitHub