Overview
How the server is doing right now.
Live now
Last 24 hours
Stats
Trends over time, plus how things stand today.
Growth
Installs over time
Registrations per day
Ratings & reviews
Ratings over time
Average rating over time
Rating by storefront over time
Stars given over time
Category rank by storefront
New ratings
Forecast quality
Accuracy over time
Amount: over vs under
Timing error over time
Verdict mix (24 h)
Push volume
Pushes per day
Pushes by type (24 h)
Active installs
Distinct installs that contacted the server in the hour (or the 24 h) ending at each point — deduplicated by install across all four registries, so a phone holding a device token, a push-to-start token and a widget token counts once. Any contact counts, foreground or background: an install woken by a nudge is still one that exists, has push enabled and is running our code. Note this is a floor, not a ceiling — the app fetches its weather straight from Open-Meteo and SHMÚ, so someone can read a full forecast without us hearing about it. Recorded from 2026-08-24; earlier points are absent rather than zero.
Active installs
Share of installs active
Windy webcams API
Windy meters per request against our key, and every call here comes from one place: a device opening the Webcams screen somewhere the SHMÚ cameras don't cover. Calls per hour is the last 24 h of that log; Calls over time follows the Stats range picker like every other trend. Windy publishes no request quota — their free-tier limits are paging depth, image URL lifetime and image size — so there is deliberately no ceiling drawn here and none enforced in the server either. What holds the number down is the cache: one upstream call per 0.25° area per 10 minutes, however many devices ask.
Windy calls / hour (24 h)
Windy calls over time
Right now
App version spread
iOS version spread
Version adoption over time
Ratings by storefront
Forecast
Whether the rain MetericCast promised actually fell.
Active Live Activities
Activities
State = raining / upcoming / clearing · Stops in = minutes until rain ends · Area = inside radar coverage or abroad · Seen = since the device last checked in.
Forecast accuracy
Each forecast is scored an hour later against the radar at that point. Covers both running Live Activities (LA) and the nowcast computed for every registered install (app) — the second is what the app's rain card would have shown that user, sampled hourly. Two different questions, kept in separate charts on purpose. Outcomes grade what we SAID — of the forecasts we issued, how many the radar confirmed, so false alarms are the number to watch there. Coverage grades what we DIDN'T say — of the rain worth announcing that fell, how much we called in advance. Silence is only counted against us above the 0.8 mm/h announce floor, because the app deliberately never predicts drizzle; grading it at the bare detection threshold once turned every intentional silence into a "miss" and made a drizzly spell look like a total failure. Radar is the reference, so a radar that over-reads flatters these figures.
Accuracy / hour
Rain we called that the radar went on to confirm. Hours with fewer than 10 verified forecasts have no bar — at that sample size the figure can only land on a handful of values and swings between 0% and 100% on one call.
Predicted vs observed rate
Outcomes / hour
countOutcomes / hour
shareCoverage / hour
The complement of the outcome charts: of the rain worth announcing that actually fell (a radar peak at or above the 0.8 mm/h announce floor), how much we called in advance versus stayed silent about. Drizzle below that floor is not counted, because the app deliberately never predicts it — scoring it here would grade us on a claim we choose not to make. Hours with no notable rain anywhere have no bar.
Prediction accuracy / hour
The hard half of the job, on its own: only forecasts where rain was not yet falling. Saying "it is raining on you now" is an observation and it verifies at ~93%, and it outnumbers real prediction roughly 5:1 — so every blended accuracy figure on this page is pulled toward it. This chart excludes it.
False alarms by predicted rate
Where the false alarms actually come from. Aggregated into the hourly buckets (21 days), not read from the record list — records only survive a day or two, and this is the breakdown that says where the rain threshold should sit.
False alarms by lead time
How far ahead the call was. "Already raining" is reporting rather than predicting, so it is listed separately.
Recent predictions vs radar
One row per forecast source — a running Live Activity (LA) or an hourly sample of what the app's rain card would have shown a registered install (app) — one dot per update. Forecast vs measured is the mean predicted rate against the rate the radar measured while it rained, so 1.00x is exact, above 2x is over-estimated and below 0.5x under-estimated. Ended is plain when the rain simply cleared, highlighted when it ended for any other reason (dismissed = the app unregistered it), and ~ when no end was recorded. Hover a dot for that update's detail.
Delivery
Pushes leaving the server, per hour.
Trends (last 24 h)
Nudges = silent refresh pushes · Widget push = WidgetKit rain transitions · Registrations show guard rejections in red.
Nudges / hour
Widget push / hour
Live Activity events / hour
Registrations / hour
MetericCast reach / hour
APNs connection health / hour
Users
Who is registered, where, and on what.
Where the users are
Last reported position, rounded to ~1 km. Click a cluster to split it; click a legend entry to hide that category. Colour = highest-priority registration at that spot.
Registered locations
live activity
raining now
widget
push-to-start
device
blue outline = SHMÚ + CHMI radar coverage
Versions in the field
One count per install, not per request. "Unknown" is pre-1.3.2, which didn't report a version.
App version
iOS version
Devices & push-to-start
Devices get silent nudge pushes; push-to-start tokens let the server start a Live Activity without the app running.
Devices
Registered for the silent ~15-min nudge that wakes the app to refresh widgets.
Push-to-start
The server can start a rain Live Activity on these without the app running.
Widget push (iOS 26 / watchOS 26)
iOS 26+ / watchOS 26+ only. Pushed on rain transitions, not on a timer.
App Store
Ratings and reviews, straight from Apple.
App Store
Cached ~1 h, per storefront. Downloads and revenue need App Store Connect and aren't available here.
Meteric on the App Store
Operations
Protections, warnings and delivery failures.
Guards & abuse protection
"Tripped" = the limit fired. Trips and warnings are in memory only, so they reset on restart.
Armed guards
Mode is the fast-revert switch: enforce blocks, observe only logs, off disables.
Recent trips
Key = what the guard acted on (device, IP, or global). If every IP is the proxy address, nginx isn't forwarding the real client IP.
Recent warnings & errors
Identical messages are collapsed into a count. A steady trickle is normal; the same message hundreds of times is not.
Guard internals
Login lockouts in force, and registry writes saved by the persist debounce.
Health
APNs failures by reason
Grouped by Apple's reason string. BadDeviceToken and Unregistered are normal churn.
Dead-token strikes
At 2/2 strikes the token is dropped — the app re-registers on next launch.
Server configuration
Read-only.