TagoTiP

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

TCP UDP MQTT HTTP
TagoTiP Protocol

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.

HTTP / JSON 487 bytes
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": "%"
}]
4.3x smaller
TagoTiP 112 bytes
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 Feature

TCP

Ordered, guaranteed delivery for environments where data integrity is critical.

See Feature

MQTT

Drop TagoTiP frames into your existing broker and TagoIO pipeline with zero changes.

See Feature

HTTP

Zero infra changes. Switch the payload format, keep your existing REST stack.

See Feature

Syntax

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]

All 4 types in a single frame
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.