One Cloud. Every Transport for IoT.
TagoTiP is a lightweight, human-readable IoT telemetry protocol and end-point for UDP, TCP, HTTP, and MQTT.
ESP32
Wi-Fi + BLE
STM32
LoRa + Cellular
Arduino
Ethernet
TagoIO
Cloud Platform
PUSH|token|serial|temperature:=23.5#C GET|token|serial|humidity:=68#% ACK|200|OK|1 record saved PUSH|token|serial|temperature:=23.5#C GET|token|serial|humidity:=68#% ACK|200|OK|1 record saved Why TagoTiP
Built for constrained devices and real networks
Everything you need to send telemetry data reliably. Less overhead and more clarity.
Smaller Payloads
Compact pipe-delimited framing uses a fraction of the bandwidth of HTTP/JSON. 112 bytes vs 487 bytes for the same data. Critical for LTE-M, NB-IoT, LoRa, and satellite links.
Human-Readable
Read, write, and debug frames directly in your terminal or serial monitor. No binary parsers, no external tools. If you can read a pipe-delimited string, you can debug TagoTiP.
Transport-Agnostic
The same frame format works over UDP, TCP, MQTT, and HTTP. Switch transports without changing your device firmware or data pipeline.
Type-Safe by Design
Explicit assignment operators define numbers, strings, booleans, and GPS coordinates inline. No ambiguous JSON casting. The type is declared at the source.
Comparison
Less bytes. More signal.
See how TagoTiP compares with a standard HTTP/JSON request for IoT sensor readings.
POST /data HTTP/1.1
Host: api.tago.io
Content-Type: application/json
Authorization: ate2bd31...c0d0
[{
"variable": "temperature",
"value": 32.5,
"unit": "C"
}, {
"variable": "humidity",
"value": 65,
"unit": "%"
}] PUSH|4deedd7bab8817ec|sensor-01|
[temperature:=32.5#C;humidity:=65#%] Transports
One protocol. Every network.
TagoTiP's frame format is transport-agnostic. Send over any protocol your hardware or network supports.
UDP
Fire-and-forget telemetry. Minimal overhead for battery-powered, constrained hardware.
See FeatureMQTT
Drop TagoTiP frames into your existing broker and TagoIO pipeline with zero changes.
See FeatureSyntax
No ambiguity. No external schema.
Easy to use. Type operators are part of the frame itself.
Numbers & Units
Integer or decimal. Attach any unit with #.
# variable := value #unit
temperature:=32.5#C
pressure:=1013.25#hPa
battery:=3.7#V
Strings
Any text value. Status labels, version strings, named locations.
# variable = "text value"
status="running"
firmware="v2.3.1"
location_name="warehouse-A"
Booleans
Exact lowercase true or false. No other values accepted.
# variable ?= true | false
door_open?=true
alarm_active?=false
connected?=true
GPS Coordinates
lat, lng, or lat, lng, alt. Altitude always in meters.
# variable @= lat,lng[,alt]
location@=-35.28,149.12,600
# combined with number in one frame
[location@=-35.28,149.12;speed:=72#kmh]
PUSH|4deedd7bab8817ec|sensor-01|[temperature:=32.5#C;status="online";alarm?=false;pos@=-35.28,149.12,600]
Get Started
Start sending data in minutes
TagoTiP is free, open-source, and available now on TagoIO. No SDKs required. Just form the frame and send.