A beautiful, feature-rich weather CLI for your terminal
Project description
Raindrop
A beautiful, feature-rich weather CLI for your terminal.
Sparklines, route planning, live dashboards, marine forecasts, and more — all without an API key.
Why Raindrop?
Most weather CLIs give you temperature and a condition. Raindrop gives you everything:
- Sparkline graphs —
▁▂▃▅▇█▅▃temperature and precipitation trends at a glance - Technical analysis — EMA crossovers, rate-of-change, and volatility on forecasts
- Real driving routes — weather checkpoints along actual roads via OpenStreetMap
- Full-screen dashboard — live TUI with auto-refresh
- Astronomical data — moon phases, golden hour, blue hour, daylight tracking
- Marine forecasts — wave height, swell, water temp for coastal trips
- Zero API keys — entirely free, open APIs
Installation
Requirements: Python 3.12+
# pip
pip install rdrop
# From source
git clone https://github.com/binarydoubling/raindrop.git
cd raindrop
pip install -e .
Quick Start
raindrop current Seattle # current conditions
raindrop hourly "New York" --spark --hours 12 # sparkline forecast
raindrop daily Portland # 10-day with trend analysis
raindrop dashboard Seattle --refresh 300 # live full-screen TUI
raindrop route "Seattle" "San Francisco" -i 100 # road trip weather
raindrop aqi Beijing # air quality index
raindrop favorites add home "Seattle, WA" # save a location
raindrop current home # use it anywhere
Features
Current Weather
Hourly Forecast with Sparklines
10-Day Forecast with Technical Analysis
EMA crossovers, rate-of-change indicators, and trend detection applied to weather data.
Route Weather Planning
Plan road trips with weather at every checkpoint along the actual driving route.
Compare Multiple Locations
Air Quality Index
Astronomical Data
Moon phases, golden hour, blue hour, and weekly daylight tracking.
Marine Forecasts
Clothing Recommendations
Live Dashboard
Full-screen TUI powered by Rich with automatic refresh.
raindrop dashboard Seattle --refresh 300
Commands
| Command | Description | Example |
|---|---|---|
current |
Current conditions | raindrop current Seattle |
hourly |
Hourly forecast (48h) | raindrop hourly Seattle --spark |
daily |
10-day forecast with trends | raindrop daily Seattle |
dashboard |
Full-screen live TUI | raindrop dashboard Seattle |
route |
Weather along a driving route | raindrop route "A" "B" -i 50 |
compare |
Compare multiple locations | raindrop compare NYC LA Chicago |
alerts |
NWS weather alerts (US) | raindrop alerts Seattle |
aqi |
Air quality index | raindrop aqi Seattle |
astro |
Moon phase, golden hour | raindrop astro Seattle |
marine |
Ocean/wave forecasts | raindrop marine "San Diego" |
clothing |
What to wear | raindrop clothing Seattle |
history |
Compare with past years | raindrop history Seattle |
discussion |
NWS forecast discussion | raindrop discussion Seattle |
precip |
Precipitation totals | raindrop precip Seattle --days 7 |
favorites |
Manage saved locations | raindrop favorites list |
config |
View/edit settings | raindrop config show |
completions |
Shell completions | raindrop completions bash |
Global Options
--units metric|imperial Set temperature and distance units (default: imperial)
--no-cache Bypass cache for fresh data
--json Output raw JSON for scripting
--help Show help for any command
Configuration
Settings live at ~/.config/raindrop/config.json.
raindrop config show # view current settings
raindrop config set units metric # switch to metric
raindrop config set location "NYC" # set default location
raindrop config cache # view cache stats
raindrop config cache --clear # clear cache
| Setting | Values | Default | Description |
|---|---|---|---|
units |
imperial, metric |
imperial |
Temperature and distance units |
location |
any string | none | Default location |
cache_ttl |
seconds | 600 |
Cache lifetime |
Shell Completions
# Bash
raindrop completions bash >> ~/.bashrc && source ~/.bashrc
# Zsh
raindrop completions zsh >> ~/.zshrc && source ~/.zshrc
# Fish
raindrop completions fish > ~/.config/fish/completions/raindrop.fish
How It Works
Raindrop combines several free, open APIs — no keys required:
| API | Purpose |
|---|---|
| Open-Meteo | Forecasts, historical data, air quality, geocoding |
| OSRM | Real driving routes via OpenStreetMap |
| NWS | Weather alerts and forecast discussions (US) |
The entire project has only 2 runtime dependencies (Click and Rich). HTTP, caching, geocoding, and astronomical calculations are all handled with Python's standard library.
Technical Highlights
- Sparklines via Unicode block characters (
▁▂▃▄▅▆▇█) - EMA crossovers and rate-of-change analysis on temperature data
- Pure-Python astronomy — moon phases, Julian day, daylight duration with no external libs
- Haversine sampling along OSRM polylines for route weather checkpoints
- File-based cache with SHA256 keys and configurable TTL
- 14 weather models selectable: ECMWF, GFS, HRRR, ICON, ARPEGE, AROME, UKMO, GEM, JMA, MetNo, and more
Regenerating Screenshots
The feature screenshots in this README are real CLI output captured as SVGs:
python scripts/capture.py # capture all commands
python scripts/capture.py current # capture a specific command
Contributing
git clone https://github.com/binarydoubling/raindrop.git
cd raindrop
pip install -e ".[dev]"
pytest
License
Built with coffee and curiosity in the Pacific Northwest — where checking the weather is a lifestyle.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rdrop-0.1.0.tar.gz.
File metadata
- Download URL: rdrop-0.1.0.tar.gz
- Upload date:
- Size: 73.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a76717b925ec36bd38dd80e2f78f595b5247b9038d28ea23363aea24ef15d04c
|
|
| MD5 |
7fb6471e5e8d61736ae632eda1211828
|
|
| BLAKE2b-256 |
c161f87148ea448ffd9f52f131a36cc1d979dacd51ca25507db9fa8068fb095e
|
File details
Details for the file rdrop-0.1.0-py3-none-any.whl.
File metadata
- Download URL: rdrop-0.1.0-py3-none-any.whl
- Upload date:
- Size: 69.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4998f03c434bbeddfb19b6ac47394ea7ab7bc610cd4a21a1ce001a5c1bf9dc0
|
|
| MD5 |
acbda54d77770df81f2b264bced33414
|
|
| BLAKE2b-256 |
37bacc738e39f53c4eb9e77c14b0e9068219fd737f7bc708e128f7364f7356fe
|