Product

One transport layer for every frame your fleet sends.

From a single sensor to a continent of devices, Relay gives you a uniform way to mask, move, and verify telemetry — so your application only ever sees frames that arrived exactly as they were sent.

A wire format with opinions

Each frame is a fixed header, a masked payload, and a trailing checksum. The format is intentionally small — easy to implement on a microcontroller, cheap to validate at scale.

Built for low-power edges

The masking transform is a repeating-key XOR with a rotating offset. No TLS handshake, no asymmetric math — just enough to keep payloads opaque on shared transports.

Fail-closed by default

If a frame's recomputed checksum doesn't match the one it carries, Relay drops it. Bad data never reaches your handlers, and your dashboards stay honest.

Deterministic decode

Decoding is a pure function of the frame and the channel key. The same bytes always unmask to the same payload — given the bytes are read in the order they were written.

A frame, end to end

What a payload goes through.

A device collects a reading, masks it, and ships it. Relay carries the bytes untouched. On the far side, the decoder reverses the mask — strictly by position — and checks the frame before anything downstream sees it.

// edge device — mask a reading before transmit
const frame = relay.encode(reading, { channel: "04", key: CHANNEL_KEY });
device.send(frame.bytes);

// ingest worker — unmask & verify on the way in
const result = relay.decode(frame.bytes, { key: CHANNEL_KEY });
if (result.verified) {
  handler(result.payload);            // e.g. payload === "FLAG{sample_payload_redacted}"
} else {
  metrics.drop("crc_mismatch");          // frame was corrupted in transit
}
Note

The decode step is position-sensitive on purpose. A frame only resolves when every byte is unmasked against the key slot the encoder used — read it out of alignment and the checksum will catch you. See the encoding reference for the exact slot math.

Try it

The sandbox runs the real decoder.

Open the live console, inspect a sample frame, and see exactly how the transport behaves — including when it's misaligned.