Your node droppedout of rotation.Now you know why.
Nodewatch runs next to your Arkiv node and shows what only the inside of the host can see. One container. One command to install. One wallet can open it: yours.
- 1
- container, next to the node
- 42
- query shapes benchmarked
- ~2 min
- until a dead node is visible on Arkiv
- 0
- extra cloud services
Serving the pool. Head lag 0, 10 peers, agreement 71 h left.
Most of the time it just says this.
One word, from a rule engine over the host, Docker, the execution and consensus clients, the tunnel and the marketplace entities.
Then one day the pool stops paying you.
nodes.arkiv.network shows out of rotation. Nodewatch names the cause, in 15 seconds, and gives you the exact command. Telegram pings you.
And the one that would have got you next week.
A forecast from allocated bytes, because reth's database file is sparse and every other disk tool is wrong about it.
nodes.arkiv.network sees your node from the outside. This is the inside.
Three things no external monitor can do, because they need the host, the keys, or the chain itself.
A heartbeat on the chain
Every 30 seconds Nodewatch renews an Arkiv entity that expires two minutes later. If the host dies, the entity vanishes. Anyone can check it with one query, and no monitoring server exists.
arkiv.schema = str('nodewatch.heartbeat')
AND status = str('degraded')A disk forecast that is right
Measures allocated bytes, not file size, because reth's database is sparse. Turns the growth rate into a date, and alerts a week before it.
Opened by the node's owner only
At install, the node's provider key signs one statement naming your wallet. From then on only that wallet can sign in. The provider key never touches a browser.
admin wallet 0xb45b…844e
authorised by the provider key
Verdict with the fix
healthy, lagging, tunnel_down, no_agreement, low_gas… each with the command that resolves it.
Pool and earnings
Offer, agreement and time left, calls served vs counted vs paid, from the marketplace entities.
Host and containers
CPU, memory, I/O, network for the host and each node container; OOM kills; restart loops.
Chain view
Head lag against the network, execution and consensus peers, finality, sync.
Alerts
Telegram and PagerDuty with grouping, inhibition and silences. Nothing to self-host.
Encrypted vault
Diagnostic bundles encrypted to an Arkiv engineer's Ethereum key, stored on Swarm.
Which queries will hurt at ten times the data?
The slow-query finder loads test entities into your own node, grows the dataset step by step, and times 42 query shapes at every size. Each shape gets a growth factor: 0 means the index does its job, 1 means time follows the data.
- Own node · your real node on Rabdi state, up to 5,000 entities
- Private node · a throwaway Arkiv dev node on the same host, free, up to 50,000
- Live market · read-only timings over the real pool entities
Findings stay private: query text is encrypted at rest, a demo-safe switch shows shapes as #N only, and reports reach Arkiv's team through the encrypted vault.
Flat rows stay flat as data grows. AND chains follow the data: at 5,000 entities they are still 33 ms, well under the 250 ms line, but they are the ones to watch at 50,000.
One command on the node host.
Needs a host that already runs the Arkiv community node kit, Docker, and the wallet address you will sign in with. Four minutes on a fresh host.
$ curl -fsSL https://raw.githubusercontent.com/rishabh-onerx/nodewatch/main/scripts/install.sh \
| sudo bash -s -- 0xYourAdminWalletReads the provider address
from the node kit's keystore. No password needed for that.
Step 1Signs the authorisation
asks the keystore password once, signs inside the kit's own image, keystore read-only. Nothing is stored.
Step 2Creates a heartbeat key
a separate hot key for the on-chain heartbeat. Fund it later from the faucet.
Step 3Builds and starts
writes .env with mode 600, starts the one container, prints your URL.
Step 4