Open-source Avalanche observability

“Up” is not the same as working.

A relayer can report healthy while cross-chain messages silently pile up. AvaPulse is the alerting layer for self-hosted Avalanche L1s and ICM relayers — it watches the message lifecycle, not just the process, and pings you on Telegram or Discord before your users notice.

docker-compose up → dashboards + alerts in minutes

avapulse · my-l1 ⇄ c-chain
RELAYER UP
icm message deliveryfuji · live demo data

The gap

The failures that hurt are the ones nothing watches for

The ICM relayer ships raw Prometheus metrics and nothing else — no alerting layer, no official dashboards. Generic monitoring sees healthy processes. But the failures that take down cross-chain apps are semantic: every individual signal looks fine, and the outage only exists in the relationship between them.

process: UP·delivered: 0

The relayer that lied

Metrics endpoint responding, no error logs — while messages accumulate on the source chain and none arrive. Every health check passes. Every user transaction fails.

relayer: healthy·wallet: 0.02 AVAX

The wallet that drained

The relayer pays destination-chain gas from its own wallet. When it empties, delivery halts with no error surfaced anywhere. The classic silent killer of ICM setups.

node: online·uptime: 81% ↓

The validator that drifted

Uptime decays gradually, then crosses the threshold all at once. By the time an explorer shows it, rewards are already gone. You needed the alert last week.

No generic Alertmanager rule ships for any of these — detecting them requires understanding the Teleporter message lifecycle. That understanding is AvaPulse.

Shipped defaults

Five alert rules, zero assembly

Avalanche-native rules out of the box, routed to Telegram, Discord, Slack, email, and webhooks by severity — with recovery notifications, cooldowns, and escalation built in.

relayer_stalled_while_up

Source chain emitting messages, relayer delivering none — while its process still reports healthy.

semantic
relayer_gas_wallet_low

Destination-chain balance below threshold, with projected time-to-empty from recent spend rate.

semantic
icm_message_stuck

A tracked message passed send but never reached execution within its delivery window — alert carries the messageID and chain pair.

semantic
validator_uptime_dipping

Fires while uptime is trending toward the floor — before rewards are lost, not after.

infra
chain_degraded

RPC unresponsive or block height not advancing on any monitored L1.

infra

How it works

Point it at your endpoints. That’s the setup.

01

Declare your infra

One YAML file: your L1 RPCs, node metrics endpoints, relayers, and the gas wallets they spend from.

02

AvaPulse correlates

The lifecycle tracker follows every Teleporter message by messageID — send, receive, execute, receipt — and knows what “late” means for each chain pair.

03

You find out first

Alerts hit Telegram, Discord, Slack, or any webhook — with recoveries, so silence means healthy, not unknown.

avapulse.yaml
chains:
  - name: my-l1
    rpc: https://my-l1.example.com/rpc
    node_metrics: http://10.0.0.5:9650/ext/metrics
relayers:
  - metrics: http://10.0.0.6:9090/metrics
    gas_wallets: [{ chain: my-l1, min_balance: 0.5 AVAX }]
icm:
  pairs: [{ from: c-chain, to: my-l1, max_delivery_seconds: 120 }]
notify:
  telegram: { bot_token: $TG_TOKEN, chat_id: $TG_CHAT }

# then:
$ docker-compose up

The landscape

Where AvaPulse sits

Good tools exist around the edges of this problem. None of them watch the cross-chain message layer.

ICM-awareAlerting-firstSelf-hostFree core
AvaPulse
Zeeveenterprise pricing
Avalanche Notifyemail only, beta
avalanche-monitoringDIY Grafana
AvaCloudmanaged only

Zeeve monitors nodes and chains well — for enterprise budgets. Avalanche Notify covers primary-network validators by email, in beta. Neither tracks message lifecycles, relayer throughput, or gas wallets. That layer is the wedge.

Building in public

Twelve weeks to MVP

M1 · weeks 1–4

Collector & dashboards

  • Node, relayer & RPC ingestion
  • Message-flow dashboard
  • Live Fuji demo
M2 · weeks 5–8

Semantic alert engine

  • ICM lifecycle tracker
  • Five default rules + recoveries
  • Telegram / Discord / Slack / webhooks
M3 · weeks 9–12

Hosted beta

  • Multi-tenant hosted version
  • 3–5 real L1 teams onboarded
  • Public usage dashboard