Sync & blocks
Last applied height—
EVM block—
Block time (chain, UTC)—
Lag behind wall clock—
Blocks applied, last 60 s / 5 min—
Apply duration, 5-min mean—
Hardfork version—
visor_abci_state height—
visor consensus time—
visor wall-clock time—
visor state file written—
Initial height (this sync)—
Scheduled freeze height—
HL API clock skew (exchangeStatus − local)—
Block lag, last 24 h (s, log scale)
Blocks applied per minute, last 24 h
Process & resources
hl-visor.service—
visor up since / unit restarts—
hl-node child—
node CPU / RSS—
node threads / fds—
hl-node binary—
hl-visor binary—
signature / quorum files—
Busy % of the cores in the visor's CPUAffinity mask
/data volume
HL nodeother (hl-mm, PG…)usableroot-reserved
Growth /data used · 1 h / 24 h / 7 d—
Growth HL node dir · 1 h / 24 h / 7 d—
Usable space runs out in—
ENOSPC in visor journal, 24 h—
inodes—
hl-data-prune timer—
/data used, GB (storage sampler history + this service)
Prune rules (hl-data-prune, every minute)
Disk guard & retention
Guard verdict—
/data used (df %) · thresholds—
Last check · action—
Checkpoint cap (hl-ckpt-prune)—
Checkpoints on disk—
Generations · size · span—
Last cap run—
Growth 24 h · node / PG / SQLite—
Growth 7 d · node / PG / SQLite—
Every tree under the node's data dir and the EVM state. Trees without a rule are flagged; the live EVM state is the one tree that must never be pruned.
Output streams (/data/hl/data) newest file age
| Unit | Reads node | State | Up for | Restarts |
|---|
| SHM segment | Write age | Content lag | Verdict |
|---|
Limits mirror /usr/local/bin/hl-bbo-freshness-check.py (write 30 s; content 60 s node / 120 s mempool).
| Housekeeping | Last run | Result | Next |
|---|
Network & validators
Validators active / total · jailed—
Gossip root IPs · API / our config—
Egress now / 24 h mean—
Projected egress—
| Top validators by stake | Stake % | State |
|---|
Box NIC tx, last 24 h (MB/s) — the node dominates egress while syncing
Visor journal, last 10 min
Cost & runbook
Data volume (gp3, 500 GB, 6000 IOPS)—
Node share of the volume—
Egress at current 24 h mean—
Node-attributable total—
hl-visor.service runs hl-visor run-non-validator as ubuntu; the visor spawns and auto-upgrades /data/hl/hl-node.
- State:
/data/hl/hyperliquid_data (EVM DB, abci_state.rmp). Streams: /data/hl/data/*, trimmed every minute by hl-data-prune.timer.
- Peers:
/data/hl/override_gossip_config.json, appended from the API every 4 h by hl-refresh-root-peers.timer; empirical list in known_good_peers.md.
- Watchdog:
hl-bbo-freshness-check.timer logs stale WTI segments every minute (log-only, no restarts).
- Rule from
/data/hl/CLAUDE.md: never pause the EC2 instance to save cost — hours of resync and a gap in replica_cmds. Pause trading by stopping MM units instead.
- Logs:
journalctl -u hl-visor.service (bounded with --since), child stderr under data/visor_child_stderr/.
Prices: egress $0.114/GB (ap-northeast-1, first 10 TB); gp3 $0.096/GB-mo + $0.006 per IOPS above 3000. Instance cost is shared with the MMs and not attributed here.