SpecsModelExplore
Overview
Actors
External Systems
IoT Platform
Edge
Edge Agent
Driver LoaderLocal BufferMQTT PublisherOTA Updater
Edge Rule Runtime
Ingestion
Stream Processing
Device Management
User-Facing Apps
Platform
Local Buffer
Data model
Delivery semantics
Notes
SpecsModelExplore
Local Buffer
OverviewGuideSchemaLinks and Communications

Local Buffer

The Local Buffer is the durability boundary of the gateway. Every reading the Driver Loader produces is committed here before anyone tries to send it. If the network is down, the box reboots, or the cloud is slow, the data waits safely on disk and replays in order.

Storage profile

An embedded SQLite database on the gateway’s local flash. A rolling budget of ~512 MB / 72 hours bounds wear and disk use; once the cloud acknowledges a batch its rows are pruned.

Data model

Three streams share the store: buffered telemetry waiting to go up, outbound commands waiting to be applied locally, and the sync cursors that track what the cloud has acknowledged. The ERD is embedded on the Overview tab.

Delivery semantics

  • Appended with a monotonic seq and marked pending.
  • Published oldest-first; rows move to acked once the cloud confirms.
  • SYNC_CURSOR.acked_seq is the high-water mark used to prune safely.

At-least-once, not exactly-once

On an ungraceful restart the publisher may resend a batch the cloud already saw. That is intentional — the cursor guarantees nothing is lost, and the cloud side is idempotent on message id, so duplicates are harmless.

Notes

  • Writes are batched in a single transaction per poll cycle to limit flash wear.
  • captured_at preserves the original device time even if publish is delayed by hours, so cloud-side ordering stays correct.