Live#…
Reading the chain…
Network now · GullyChain Testnet
Block
—
Txs · 30 blocks
—
Gas, gwei
—
Launches
—

Run a Gully Sentry watcher in 5 minutes

On this page

Live

Testnet. Sentry Keys are free and have no monetary value. A running watcher puts your key on the public operator leaderboard and counts toward testnet XP and badges. Mainnet rewards are not decided, and nothing here promises any.

The watcher checks every assertion GullyChain posts to Arbitrum Sepolia against your own view of the chain, and signs a heartbeat for your key every 10 minutes. It needs Docker (or Node.js 20+), about 100 MB of memory and no funds. The full guide is Gully Sentry: claim, run, check.

#1. Claim your free key (1 minute)

Open sentry.gullychain.xyz, press Connect wallet to claim and follow the steps. You sign one message; Gully Labs pays the mint gas. Note your key number (for example 12).

#2. Download the watcher and make its hot key (1 minute)

Shell
mkdir gully-sentry && cd gully-sentry
curl -fsSLO https://sentry.gullychain.xyz/downloads/gully-sentry.mjs
curl -fsSL https://sentry.gullychain.xyz/downloads/gully-sentry.mjs.sha256 | sha256sum -c -
docker run --rm -v gully-sentry:/data -v "$PWD/gully-sentry.mjs:/app/gully-sentry.mjs:ro" \
  -e SENTRY_KEY_FILE=/data/operator.key node:22-alpine node /app/gully-sentry.mjs init

init prints an operator address. That hot key only signs heartbeats; your Sentry Key never leaves your wallet. On Windows, check the file with (Get-FileHash .\gully-sentry.mjs -Algorithm SHA256).Hash.ToLower().

#3. Delegate your key (1 minute)

On Run a sentry, step 2, enter your key number and the operator address and press Delegate: one transaction from the wallet that holds the key. You can change or remove the operator at any time.

#4. Start the watcher (one command)

Replace <your key> with your key number:

Shell
docker run -d --restart unless-stopped --name gully-sentry -v gully-sentry:/data \
  -v "$PWD/gully-sentry.mjs:/app/gully-sentry.mjs:ro" \
  -e SENTRY_KEY_FILE=/data/operator.key -e SENTRY_CONFIG=/data/gully-sentry.json \
  -e SENTRY_KEY_CONTRACT=0xa24bF9f0eA1AE5F5226d8F7e714cEa3537aa30Ac -e SENTRY_TOKEN_IDS=<your key> \
  node:22-alpine node /app/gully-sentry.mjs run

No Docker? With Node.js 20+: node gully-sentry.mjs init, then SENTRY_KEY_CONTRACT=0xa24bF9f0eA1AE5F5226d8F7e714cEa3537aa30Ac SENTRY_TOKEN_IDS=<your key> node gully-sentry.mjs run.

For the strongest check, point it at a node you trust: add -e SENTRY_L3_RPC=https://rpc.gullyrpc.xyz/<project>/evm/485590 (Gully RPC (opens in a new tab)) or the URL of your own Nitro node.

#5. See your uptime (within 10 minutes)

  • docker logs -f gully-sentry shows each heartbeat and its verdict (ok, mismatch, stale or unreachable).
  • Run a sentry, step 4 Check my key, shows your key's last heartbeat.
  • The operator leaderboard ranks keys by uptime over 24 hours and 7 days. It shows your .gully name if you have one, otherwise a short address.

Uptime is the share of 10-minute slots in which your watcher sent a usable heartbeat. Keep the container running (--restart unless-stopped brings it back after a reboot) to stay near 100%.

Problem Fix
not operator for key(s) in the logs Step 3 was not done for this key, or the key moved to another wallet. Delegate again
The watcher runs but no heartbeat shows up Your machine's clock may be off by more than 10 minutes (heartbeats are refused). Turn on network time
Verdict unreachable The watcher cannot reach GullyChain or Arbitrum Sepolia. Check the RPC URLs and your network
Verdict mismatch The chain disagrees with your node. The watcher has already reported it; tell us in Telegram (opens in a new tab)