Direct appends

Do the Tigris setup first.

Devices
MQTT / HTTP / serial
Your process
table.append
commit
Lake bucket
Iceberg tables

A process that already receives the readings (an MQTT client, an HTTP API, a gateway's poller) appends to the lake itself, with the variables from Shared setup in its environment:

import timelake
 
table = timelake.Lake("s3://my-lake/warehouse").table("iot.readings")
table.append(batch)  # a pyarrow Table, RecordBatch, or polars DataFrame

Collect readings for a few seconds and append them together, as in the local guide: each append is one commit, about 7 writes. Writers can run anywhere. In a single-region bucket every request goes to that region, so put the writers near it, or choose a multi-region bucket if they are spread across a continent. Several processes can append to one table; when two commit together, one retries.