Heartbeats
How workers announce themselves on Arkiv, and how a dashboard finds your own worker without a URL.
Each worker keeps one trg.worker entity alive: its heartbeat. It lives 5 minutes and the worker
extends it every minute. If the worker stops, the heartbeat expires and the worker drops out of
listWorkers() on its own.
A heartbeat says:
| Field | Meaning |
|---|---|
version | The release it runs, such as arkiv-triggers/0.1.1 |
mode | any or own |
actions | What it can run, such as telegram,webhook,receipt,extend |
lastblock | The last block it fully processed. A restarted worker resumes from here and replays the deletes it missed |
operator | Optional: its owner's main wallet |
sealKey (payload) | The public key apps seal Telegram chat IDs to |
operatorSig (payload) | The owner's signature linking their wallet to this worker |
Finding your own worker
A worker you run only makes outgoing connections, so it can sit on a laptop behind a home router. The
dashboard finds it on Arkiv instead of by URL: it looks for heartbeats whose operator is your
wallet, and checks operatorSig is your signature over I operate Arkiv Triggers worker <address>.
A heartbeat that merely names you, without your signature, is ignored (operatorVerified: false).
The signed message keeps the original project name for compatibility with existing operator proofs.
See Link your worker.