IMD RSMC New Delhi cyclones
North Indian Ocean cyclone tracks, forecast wind radii, and cones of uncertainty come from the official IMD API (weather:imd-cyclone-marine:v1). Observed positions stay distinct from forecast positions. Wind radii and the cone of uncertainty are forecast/uncertainty geometry, never an observed storm footprint. The seeder does not flatten these products into weather:alerts:v1. Live fetch requires IMD_API_KEY, IMD_API_EMAIL, and IMD_API_PASSWORD; the seeder mints a short-lived JWT for each run. A disabled or empty snapshot is not an all-clear.
Configure the IMD Railway seeder
IMD authenticates each API request with both an API key and a JWT. The API key identifies the approved server and static public IP. Railway calls this address a static outbound IP. The JWT authenticates the IMD account and expires after 3,600 seconds. WorldMonitor mints a new JWT at the start of each seed run. Do not store the JWT in Railway.- Create an account in the IMD API portal. Use the same account to create the API key and mint JWTs. Follow the IMD API Portal User Guide.
-
Enable Railway Static Outbound IPs
for the service. Run the following command to list the addresses Railway can
use:
Railway assigns three static outbound IPv4 addresses to a high-availability service and balances traffic across them. Application code cannot select the Railway NAT address for an IMD request or reliably probe it in advance: an IP-check request is a separate connection and can use a different address from the later IMD request. The IMD portal documents a maximum of 2 Development keys and 2 Production keys, and each key is associated with one server public IP. Railway’s native three-IP HA egress cannot satisfy the documented IMD contract. Do not register only one Railway address and assume that the service will keep using it. Activation requires deterministic single-IP external egress. Set
PROXY_URLto a fixed-egress HTTPS CONNECT proxy, using eitherhttps://user:password@host:portor Decodo’shost:port:user:passwordformat. The seeder routes the JWT request and every IMD product request through this proxy. It does not proxy Redis traffic and does not fall back to direct Railway egress. Verify the proxy’s public egress IP from the service environment and register that one address with IMD when you create the production API key. Do not cycle keys on HTTP 403: that cannot create a deterministic key/IP pair. Treat an IMD-origin HTTP 403 from every product as an API key status or public-IP authorization failure. A proxy CONNECT HTTP 403 is a proxy-provider policy failure instead. Confirm that the proxy provider permitsapi.imd.gov.inbefore activation. Decodo’s ISP Pay/IP restricted-target policy lists government sites as restricted and states that this restriction cannot be removed from that proxy product. It returns a proxy CONNECT HTTP 403 before a request reaches IMD, so it cannot provide the IMD route even when its fixed egress IP is correct. Use a fixed-egress proxy that explicitly permits the IMD host. -
Add these service variables in Railway. Store each value as a secret.
Do not set
IMD_API_TOKEN. The seeder sends the account credentials toPOST https://api.imd.gov.in/api/oauth/token.phpand keeps the returned JWT only for the current run. -
Deploy from
mainand record the deployment time. Confirm that the active deployment manifest uses the registry schedule,*/15 * * * *, then wait for its next natural cron run. -
Call the WorldMonitor MCP tool
get_imd_cyclone_marine. Accept the setup only when the response hasstale: false, its IMD snapshot hascoverageState: ok, andgeneratedAtis later than the deployment time. Each enabled product must havestatus: ok; its record count can be zero during a quiet period. Also confirm thathttps://api.worldmonitor.app/api/health?compact=1does not listimdCycloneMarineinproblems. A successful Railway deployment, an older green cache value, or anOK_ZEROprocess result does not prove that IMD accepted the current credentials and egress path.
GDACS (Global Disaster Alert and Coordination System)
UN-backed disaster alert system providing official severity assessments:
Alert Levels:
NASA EONET (Earth Observatory Natural Event Tracker)
Near-real-time natural event detection from satellite observation:Multi-Source Deduplication
When both GDACS and EONET report the same event:- Events within 100km and 48 hours are considered duplicates
- GDACS severity takes precedence (human-verified)
- EONET geometry provides more precise coordinates
- Combined entry shows both source attributions
Filtering Logic
To prevent map clutter, natural events are filtered:- Wildfires: Only events < 48 hours old (older fires are either contained or well-known)
- Earthquakes: M4.5+ globally, lower threshold for populated areas
- Storms: Only named storms or those with warnings
