US weather forecasts, alerts, and severe weather outlooks — right in your terminal.
$ curl t.wxs.us # weather for your location $ curl t.wxs.us/48201 # by zipcode $ curl t.wxs.us/42.33,-83.05 # by coordinates $ curl t.wxs.us/48201?hourly # 24-hour hourly forecast $ curl t.wxs.us/48201?table # compact table view $ curl "t.wxs.us/48201?format=json" # JSON output $ curl t.wxs.us/rock # the weather rock
$ ssh t.wxs.us # interactive dashboard $ ssh t.wxs.us -t 48201 # by zipcode $ ssh t.wxs.us -t 42.33,-83.05 # by coordinates
US locations only. Data sourced from the National Weather Service and NOAA Storm Prediction Center.
Enter a zipcode to see your forecast.
Consulting the rock...
The dashboard and curl t.wxs.us output now include a single-line "Current:" reading under the header — the latest observation from the nearest METAR station, including text description, temperature, dew point, wind, humidity, visibility, and pressure. Observations refresh on the same cycle as the forecast, so what's actually happening outside lives next to what the forecast says will happen.
Radar map alert polygons now reflect the impact-based-warning tier. Tornado Warnings show in red, Particularly Dangerous Situation (PDS) warnings in hot magenta, and Tornado Emergencies in deep crimson-magenta. Severe Thunderstorm Warnings show in orange, with Considerable warnings in deep orange-red and Destructive warnings in magenta. Higher tiers also render on top of lower ones when polygons overlap, so the worst warning in an area is always visible. The alert detail modal now shows the tier in its title (e.g. "Tornado Emergency" instead of "Tornado Warning").
The SSH terminal has a new stats page (press s on the dashboard) that shows unique visitor counts for HTTP and SSH traffic across rolling 24-hour, 7-, 30-, 90-, and 365-day windows plus all-time. IP addresses are never stored: each request runs through HMAC-SHA256 keyed with a 32-byte random secret that's generated on the server's first boot and lives only on the server, so the recorded values cannot be reversed back to an address.
Severe Thunderstorm Watches and Tornado Watches now appear on the radar map. The NWS public alerts feed publishes these watches by county reference only (no polygon), so they were silently dropped from the map even though warnings rendered fine. Watch polygons are now pulled from the NWS event-driven map service and stitched onto the matching alert, so a watch shows up as the union of its affected counties — the same outline the SPC convective watches map uses.
The radar basemap is still dark mode but the pure-black floor has been lifted to a dark grey-blue, easier on the eyes without losing the dark feel. The Radar tab also has a new opacity slider for the radar layer; the value persists across reloads.
The radar overlay now renders in Web Mercator coordinates instead of equirectangular. Storms were previously drawn ~20–30 km north of their true position because a flat lat/lon canvas was being stretched into a Mercator map; the overlay now lines up with RadarScope, GR2Analyst, and other reference apps for the same station and product.
Radar tab improvements:
Server-side caching improvements for the alerts and SPC mesoscale discussion endpoints. A single transient NWS timeout previously caused every browser to receive a 502 until upstream recovered; the cache now falls back to a recent-good copy on upstream failure, and concurrent requests share a single upstream fetch via singleflight.
The radar map now has a two-tab control panel: Radar for station/product controls and Alerts for filtering what's drawn on the map.
The Alerts tab splits into a left column of categories (Warnings, Watches, Advisories, Statements, MCDs) and a right column of hazard sub-types (Tornado, Severe T-storm, Flash Flood, Flood, Winter Storm, Hurricane / Tropical, Other) that gate what shows for Warnings and Watches. Defaults keep only tornado and severe thunderstorm warnings visible — a clean severe-weather-focus view. Toggle state persists in your browser so your preferences stick across visits.
SPC Mesoscale Discussions can now be overlaid on the radar map as amber dashed outlines. Click one to read the full narrative text pulled from SPC.
A new Forecast tab is available on the website. Enter a zipcode or allow geolocation to see the 7-day forecast and active NWS alerts for your location, powered by the same cached data that drives the terminal service.
A 100% accurate weather forecasting device is now available. The rock reads real weather conditions at your location and reports its state accordingly.
$ curl t.wxs.us/rock # consult the rock $ curl t.wxs.us/rock/48201 # rock for a specific location
Also available in the SSH TUI — press r from the dashboard.
A web-based NEXRAD Level II radar viewer is now available. Select any WSR-88D station to view live radar data with auto-refresh every 30 seconds.
Data is fetched directly from the NEXRAD Level II archive on AWS. This is an early alpha — expect rough edges.
The terminal TUI and web SPC Outlook page now include Days 4-8 probabilistic convective outlooks with the shared Day 4-8 discussion text.
The terminal service now displays significant/extreme severe weather probabilities alongside existing SPC outlook data. When non-zero, you'll see a sig annotation on the outlook bar:
SPC Day 1: ENH RISK - Tornado 10% (CIG1, 2% sig), Wind 30% (CIG1, 4% sig)
The sig values represent the probability of the most dangerous events: EF2+ tornadoes, 2"+ diameter hail, and 75+ mph winds. These correspond to the "hatched" areas on SPC outlook maps.
The terminal service now pulls from three distinct NWS/NOAA data sources:
All three sources are fetched in parallel. NDFD data is cached for 15 minutes. The sig values only appear when greater than zero, so quiet weather days look unchanged.
Added the SPC Outlook tab to the website with Days 1-8 categorical and probabilistic outlook images, plus full discussion text for Days 1-3.
Launched t.wxs.us — a terminal-based weather service for the US. Get forecasts, alerts, and SPC outlooks via curl or an interactive SSH dashboard.
All data sourced from the National Weather Service. No API keys or signup required.