USDC price alerts for Solana tokens via Jupiter and ntfy.sh push notifications (+Raspberry Pi 5)
50K+
A web-enabled price monitoring and alert tool for Solana tokens using the Jupiter Aggregator.
See current Jupiter USD market-reference prices at a glance, or monitor simulated USDC swaps with real price impact across one or many Solana tokens and receive push alerts via ntfy.shβ from a modern Web UI.
β If you find this project useful, consider starring the repository.
Source code, complete documentation, release history and updates:
π https://github.com/Nicxx2/jupiter-usdc-price-alertsβ
Note
Market values in the BONK, WIF, and JUP screenshots below are clearly labelled illustrative demo data. They are not live market data or financial advice.



Rule Trends reuse saved Action Readiness checks. Gaps remain visible instead of being plotted as zero.










β‘οΈ View the v3.5 releaseβ
The example below uses the public Docker Hub image nicxx2/jupiter-usdc-price-alerts:latest, so no local image build is required.
You only need Docker with Compose support. SolanaTracker and Jupiter API keys enable optional features.
β
Update OUTPUT_MINT to the token you want to monitor.
π Change TZ to match your region so timestamps and cooldown logic align correctly.
services:
jupiter-usdc-price-alert:
image: nicxx2/jupiter-usdc-price-alerts:latest
container_name: jupiter-usdc-price-alerts
restart: unless-stopped
ports:
- "8000:8000"
environment:
# --- Token Configuration ---
# Input mint must be USDC for accurate USD-based alerts
INPUT_MINT: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
# Token you want to monitor
OUTPUT_MINT: <YOUR_OUTPUT_TOKEN_MINT>
# Required for RSI, Token Safety, wallet information and sell simulator
SOLANATRACKER_API_KEY: ""
# Saved UI settings in /shared/config.json take priority after editing
SOLANATRACKER_ENABLED: "true"
# SolanaTracker limiter: safe, custom, or off
SOLANATRACKER_RATE_LIMIT_MODE: safe
SOLANATRACKER_REQUESTS_PER_SECOND: 1
# Cached Token Safety reports
TOKEN_SAFETY_ENABLED: "true"
TOKEN_SAFETY_INTERVAL_HOURS: 24
# Optional and used only by Action Rules
JUPITER_API_KEY: ""
# Existing keyless Jupiter price-monitor limiter
JUPITER_REQUESTS_PER_SECOND: 0.5
# Price Watch scheduling and persistent history
PRICE_WATCH_REFRESH_SECONDS: 60
PRICE_WATCH_IDLE_GUARD_SECONDS: 10
PRICE_WATCH_MAX_INTERVAL_SECONDS: 120
PRICE_WATCH_HISTORY_PATH: /shared/price-watch-history.sqlite3
# Recheck unusually large moves before charting or alerting
PRICE_MOVE_CONFIRMATION_ENABLED: "true"
PRICE_MOVE_CONFIRMATION_THRESHOLD_PERCENT: 50
PRICE_MOVE_CONFIRMATION_TOLERANCE_PERCENT: 15
PRICE_MOVE_CONFIRMATION_DELAY_SECONDS: 5
# Action Rules
COMMUNITY_RULES_JUPITER_REQUESTS_PER_SECOND: 0.5
COMMUNITY_RULES_ENABLED: "true"
COMMUNITY_RULES_CHECK_INTERVAL: 120
COMMUNITY_RULES_STALE_SECONDS: 360
COMMUNITY_RULES_QUOTE_MAX_AGE_SECONDS: 90
COMMUNITY_RULES_SOURCE_MAX_AGE_SECONDS: 3600
COMMUNITY_RULES_HISTORY_PATH: /shared/action-rules-history.sqlite3
COMMUNITY_RULES_HISTORY_RETENTION_DAYS: 90
COMMUNITY_RULES_HISTORY_MAX_POINTS: 480
# --- Simulated Swap Settings ---
# Amount of USDC to simulate swapping
USD_AMOUNT: 100
# Optional token decimal overrides; leave blank for auto-detection
INPUT_DECIMALS: ""
OUTPUT_DECIMALS: ""
# How often to check prices, in seconds
CHECK_INTERVAL: 60
# --- Alert Triggers ---
BUY_ALERTS: "0.00138, 0.00135, 0.00136"
SELL_ALERTS: "0.00140, 0.00145"
# --- RSI Configuration ---
RSI_ENABLED: "true"
RSI_CHECK_INTERVAL: 5
RSI_ALERTS: "below:30"
RSI_INTERVAL: "5m"
RSI_RESET_ENABLED: "false"
# Comma-separated wallet addresses
WALLET_ADDRESSES: ""
# --- Push Notifications ---
NTFY_TOPIC: token-alerts
NTFY_SERVER: https://ntfy.sh
# Minutes before the same buy/sell alert can trigger again
ALERT_RESET_MINUTES: 0
# --- Timezone ---
TZ: Europe/London
volumes:
- jupiter-alert-data:/shared
logging:
driver: "json-file"
options:
max-size: "2m"
max-file: "5"
volumes:
jupiter-alert-data:
Start the container:
docker compose up -d
Pull a newer image and recreate the container:
docker compose pull
docker compose up -d
Existing configurations remain compatible.
Price Watch automatically creates /shared/price-watch-history.sqlite3 inside the existing persistent volume. It remains separate from alert state, simulated quote history, and Action Readiness history.
If the /shared volume is mounted as shown above, saved settings, alerts, histories, wallets and Price Watch data survive container recreation and future image updates.
When running locally:
http://localhost:8000
When running on another server, replace localhost with its IP address or hostname:
http://<your-server-ip>:8000
From the Web UI you can:
ntfy.shThis project uses ntfy.shβ to send free push notifications to your browser or mobile device.
β
No signup required
β
Works on Android, iOS, browsers and terminals
Subscribe to the topic configured in NTFY_TOPIC.
Open:
https://ntfy.sh/<your-topic>
Then allow browser notifications when prompted.
NTFY_TOPIC unique because it acts as your alert channel/shared volume mounted to preserve settings and historylinux/amd64linux/arm64 β Raspberry Pi 4/5linux/arm/v7 β Raspberry Pi 3 and older ARM devicesFor complete feature documentation, production notes, previous release history and source code:
π GitHub Repositoryβ
π v3.5 Releaseβ
π All Releasesβ
If you find this project useful, you can leave a tip here β thank you!
Content type
Image
Digest
sha256:1d83afc5fβ¦
Size
100.6 MB
Last updated
about 1 month ago
docker pull nicxx2/jupiter-usdc-price-alertsPulls:
380
Last week