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.
- What it is
- IoT device messaging
- 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 →
AWS IoT CoreAWSAWS’s managed MQTT broker for devices, with per-device certificates, a SQL rules engine that routes messages into AWS services, and cloud-side device state.
Eclipse ZenohIncubatingOpen sourceA pub/sub, query and storage protocol that runs peer to peer or through routers, from microcontrollers to the cloud; also a ROS 2 middleware.
EMQXCommercialAn Erlang MQTT broker built for very large device fleets, with a SQL rule engine, now under the Business Source License.How it fits with other technologies
What Thinger.io uses
- Thinger.ioruns its own broker for devices usingMQTT
- Thinger.iokeeps its on-premise data inMongoDB
- Thinger.iois installed on premises withDocker
- Thinger.iocan host, as a plugin,Grafana
- Thinger.iocan host, as a plugin,Prometheus
- Thinger.iois automated, through community nodes, byn8n
- Thinger.ioreceives OTA firmware builds fromVisual Studio Code
- Thinger.ioexposes device data to AI clients overModel Context Protocol (MCP)
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
- 2014
First lines of code, written by Álvaro Luis Bustamante
- 2015
Project starts; Arduino client library published on GitHub
- 2018
Becomes a company and releases an enterprise version
- 2026
IOTMP submitted to the IETF as an individual Internet-Draft
Sources11 · facts checked 23 October 2026
- Thinger.io homepage (features, deployment options, MIT clients, MCP server)
- Thinger.io docs: Overview (server subscribes to resources, open-source claim)
- Thinger.io docs: Data buckets
- Thinger.io docs: MQTT clients (ports, MQTT 3.1 and 3.1.1)
- Thinger.io docs: On-premise deployment (licence token, Docker Compose, MongoDB)
- Thinger.io docs: Thinger.io Cloud deployment
- Thinger.io pricing (checked 2026-10-23)
- Thinger.io Arduino library README (resources, boards, OTA, MIT licence)
- GitHub: thinger-io/IOTMP
- GitHub: thinger-io/n8n-nodes-thinger
- IETF Datatracker: draft-bustamante-iotmp (PSON encoding; TCP, TLS or WebSocket)