Telegram alerts for Solana validator release requirements.
A lightweight operator bot that checks your validator version against Solana Foundation Delegation Program release requirements and notifies you before an epoch deadline becomes a problem.
✨ What it does
- 🛰️ Checks Solana validator software versions on mainnet-beta and optional testnet.
- 📡 Reads required Agave/Firedancer versions from the Solana Foundation Delegation Program API.
- 🔔 Sends Telegram alerts when a validator version needs attention.
- ⏱️ Shows current epoch and estimated time left in the epoch.
- 🧯 Suppresses noisy transient RPC failures with retry thresholds.
- 📊 Supports manual
/statuschecks and an inline Telegram status button. - 🔐 Does not require private keys.
🧭 Why this is useful
Validator operators need to react quickly to required client upgrades. This bot reduces the chance of missing release deadlines by turning version requirements into direct Telegram notifications.
It is designed as a small, auditable contribution for validator operations tooling: simple to run, easy to inspect, and safe to deploy next to an existing validator setup.
📨 Example alert
⚠️ [mainnet] Version not updated!
Validator: <vote account pubkey>
Current version: 1.18.x
Required by epoch 742: 2.0.x
Current epoch: 741
Time left in epoch: 7h 25m
🧩 How it works
flowchart TD
A[Solana CLI] --> B[Read validator version]
C[SFDP required versions API] --> D[Read required versions]
B --> E[Compare current vs required]
D --> E
E --> F{Version OK?}
F -->|Yes| G[Send OK once]
F -->|No| H[Send Telegram alert]
H --> I[Throttle repeated alerts]
✅ Requirements
- Python 3.10+
- Solana CLI installed and available as
solana - Telegram bot token
- Telegram chat ID
- Validator vote account pubkey
⚙️ Installation
git clone https://github.com/web3validator/solana-release-alerts.git
cd solana-release-alerts
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
cp .env.example .env
Edit .env:
TELEGRAM_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
MAINNET_VOTE_PUBKEY=your_mainnet_vote_account_pubkey
TESTNET_VOTE_PUBKEY=
TESTNET_VOTE_PUBKEY is optional. Leave it empty if you only want mainnet checks.
Default behavior:
- check interval: 1 hour
- RPC error alert: after 3 consecutive failures
- Solana CLI binary:
solana
Optional overrides:
CHECK_INTERVAL_SECONDS=3600
RPC_ERROR_ALERT_ATTEMPTS=3
SOLANA_BIN=solana
▶️ Run
./venv/bin/python bot.py
On first start, the bot validates required configuration and then begins periodic checks.
💬 Telegram commands
| Command | Description |
|---|---|
/start |
Run a status check |
/status |
Run a manual status check |
Alerts also include an inline 📊 Status button.
🛠️ Systemd
An example template service is included: [email protected].
Install it for the current Linux user:
sudo cp [email protected] /etc/systemd/system/[email protected]
sudo systemctl daemon-reload
sudo systemctl enable --now solana-release-alerts@$USER
sudo journalctl -u solana-release-alerts@$USER -f
🔐 Security notes
This repository should never contain secrets or validator key material.
Ignored by default:
.envand local environment files- runtime
state.json - virtual environments
- backups
- logs
- validator identity and vote-account keypair files
The bot only needs a vote account public key and does not need access to private validator keys.
📁 Project structure
.
├── bot.py # Main loop, setup wizard, Telegram polling
├── checker.py # Solana CLI + required version checks
├── config.py # Environment-based configuration
├── notifier.py # Telegram message formatting and delivery
├── state.py # Local alert throttling state
├── requirements.txt
├── [email protected] # Example systemd template service
└── .env.example
🤝 Contributions
Ideas and pull requests are welcome, especially around:
- more client/version metadata
- richer Telegram status output
- additional notification channels
- tests and CI
- validator operator UX improvements
📄 License
MIT
Comments