The wonder of nature, displayed in your terminal.
Dusty is a lightweight, configurable terminal weather forecast for macOS, written in Swift. It resolves place names and retrieves forecasts from the Open-Meteo APIs.
- Search and save a default location
- Use a different location for a single request
- Current conditions and today's forecast
- Next 8 hours
- Multi-day forecasts with 4, 8, or 15 API days
- Temperature trend graph
- ANSI colors and terminal-friendly weather icons
- Six-hour offline fallback from the local cache
- No third-party dependencies
- macOS 13 or later
- Swift 6.1 or later when building from source
- Internet access for location search and fresh forecasts
git clone https://github.com/steffenwoell/dusty.git
cd dusty
./build.zshThe build script creates an optimized, locally ad-hoc-signed executable at dist/dusty, verifies it, and retains an existing successful build until its replacement passes validation. Build a universal Apple Silicon and Intel executable with:
./build.zsh --universalSelect a different destination with --output PATH. A signing certificate can be supplied through APPLE_SIGN_IDENTITY; the default ad-hoc signature is intended for local builds and is not notarized distribution.
Install the resulting executable in a directory on your PATH, for example:
install -m 755 dist/dusty "$HOME/bin/dusty"Set a default location:
dusty --set-location "Leipzig"The first matching place returned by Open-Meteo is stored. Confirm the resolved place with:
dusty --show-locationdusty
dusty --current
dusty 7
dusty 14
dusty --location "Berlin"
dusty --location "New York" --current
dusty --location "London" 7--location applies only to that invocation and does not change the saved default. If you prefer the shorter command d, define it in your shell configuration:
alias d=dustyDusty stores only the selected default location and a short-lived forecast cache on your Mac. No API key is required for non-commercial use. It follows the XDG base-directory variables when they are set. Otherwise it uses:
~/.config/dusty/config.json
~/.cache/dusty/
The configuration contains the selected place name, coordinates, and time zone. Forecast cache entries are kept separately for each location.
Run the network-independent smoke checks:
./tests/smoke.zshLocation and forecast data are provided by Open-Meteo.com under the Creative Commons Attribution 4.0 International licence. Dusty displays attribution alongside forecast data. The free Open-Meteo endpoint is intended for non-commercial use and is subject to its published limits and terms.
Created by Steffen Wöll, 2026.
MIT License.
