The cloud sends control messages to devices on:Documentation Index
Fetch the complete documentation index at: https://docs.ilyama.golain.io/llms.txt
Use this file to discover all available pages before exploring further.
Shared envelope
| Field | pause | resume | url_grant |
|---|---|---|---|
control_id | ✓ | ✓ | ✓ |
control_kind | ✓ | ✓ | ✓ |
source_table | ✓ | ✓ | — |
server_watermark | ✓ | ✓ | — |
reason | ✓ | — | — |
presigned_url | — | — | ✓ |
presigned_url_expires_at | — | — | ✓ |
Required device behavior (all kinds)
- ACK immediately on
sync/ingest/ackwith samecontrol_id. - Then execute kind-specific logic.
edge_pending_controls until ACK received.
pause_lineage
When sent:- Volume backpressure (staged rows exceed cap)
- Materialization circuit breaker
- Schema review pause alone (server stages while device keeps sending)
- Stop publishing batches for
source_table. - Buffer new journal rows durably (Omega:
state.db+ buffer store). - Record
server_watermark— last acceptedcommit_seq(rows) orbatch_seq(telemetry).
resume_lineage
When sent:- Backlog drained below resume threshold (auto sweep)
- After
reset-materializationwhen device had been pause-downlinked
- Drain buffer in commit_seq / batch_seq order starting at
server_watermark + 1. - Resume normal 5s flush loop.
- If local buffer was lost during pause → request bootstrap snapshot (secondary flow, when available).
url_grant
Secondary flow for large backfill or spill objects. Device actions:- ACK control.
- HTTP PUT zstd-compressed JSONL (
.jsonl.zst) topresigned_url(15 min TTL). - Publish finalize on
sync/ingest/requestwith matchingbatch_idandsegment_kind.
Protocol diagram
Omega implementation
Modulesqlite-replication subscribes to control topic, handles pause/resume in state/store.go, ACK via sync/ingest/ack.
Verify in logs: