Skip to content

About

a.DI monitoring tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

a.DI Dashboard

AAVE Delivery Infrastructure Dashboard

Dashboard for monitoring the Aave Delivery Infrastructure — browse envelopes, messages, and payloads with links to Governance V3 proposals. Includes Slack alerts for events requiring immediate attention.

This application performs scans on configured chains every two minutes, capturing new events emitted by CrossChainController contracts and storing them in a database. In the event of an RPC query range failure, the application will automatically retry during the next retry cycle, which occurs every 5 minutes. The app's status page provides an overview of the scan progress and details of the specific ranges.

Delivery of an envelope is confirmed upon reaching consensus and logging a successful EnvelopeDeliveryAttempted event. Envelopes not delivered within 60 minutes are marked as delivery failures, triggering a notification on Slack.

The application uses PostgreSQL with Drizzle ORM for data storage, and tRPC for type-safe data operations. The front-end is built with Next.js and styled with Tailwind CSS. Scheduled scans run via Vercel Cron Jobs and notifications are sent through the Slack API.

Prerequisites

Getting started

Clone the repository:

git clone git@github.com:bgd-labs/adi-dashboard.git
cd adi-dashboard

Set up the database

Create a PostgreSQL database and push the schema:

npx drizzle-kit push

Set environment variables

Copy .env.example to .env and fill in the values:

cp .env.example .env

The key variable is DATABASE_URL — a PostgreSQL connection string (e.g. postgresql://user:password@host:5432/dbname).

Install and run

pnpm install
pnpm dev

Deployment

Deploy with Vercel

The app is designed for Vercel. Set these environment variables in your Vercel project:

  • DATABASE_URL — PostgreSQL connection string
  • CRON_SECRET — protects cron API endpoints
  • SLACK_BOT_TOKEN / SLACK_CHANNEL_ID — Slack notifications
  • ICON_GENERATOR_KEY — protects the icon generator endpoint
  • ENVIRONMENT_STAGE — PROD or PREPROD
  • COINGECKO_API_KEY — for token price data
  • ALCHEMY_API_KEY — for transaction tracing

Cron schedules are configured in vercel.json.

Adding a new chain

To monitor a new chain, the chain must be supported by the viem/chains package.

Insert a new row into the CrossChainControllers table:

INSERT INTO "CrossChainControllers" (
  chain_id, address, created_block, rpc_urls, rpc_block_limit,
  chain_name_alias, native_token_name, native_token_symbol
) VALUES (
  42161,
  '0x...CrossChainController address...',
  12345678,
  ARRAY['https://arb1.arbitrum.io/rpc'],
  500,
  'Arbitrum',
  'Ethereum',
  'ETH'
);

Required fields: chain_id, address, created_block, rpc_urls

Optional fields: rpc_block_limit (default 500), chain_name_alias, analytics_rpc_url, native_token_name, native_token_symbol

To enable low-balance alerts for the new chain, add thresholds in src/app/api/cron/notify/balances/route.ts.

Scanning starts automatically on the next cron cycle (every 2 minutes).

License

MIT © 2026 Aave DAO

Created by BGD Labs.

About

a.DI monitoring tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages