Overview
Zeemist is a single-binary CLI written in Rust that aggregates coastal and marine condition data from public APIs into a readable terminal output.
What Zeemist does
At its core, Zeemist answers three questions you might ask on any coastal morning:
- Tide: When are the highs and lows today, and how extreme are they?
- Fog: Is there fog right now, and when will it clear?
- Surf: What's the swell window like for the next 24 hours?
It pulls data from NOAA CO-OPS for tide predictions and from the Open-Meteo Marine API for wave and weather data. Neither requires an API key for basic queries under the rate limit.
zeemist tides
Fetch harmonic tide predictions for a NOAA gauge station.
zeemist tides [OPTIONS]
OPTIONS:
--station <ID> NOAA CO-OPS station ID (e.g. 9414290)
--profile <name> Use a saved location profile
--days <N> Days to display (default: 1, max: 30)
--format <fmt> table | chart | json (default: table)
--json Shorthand for --format json
To find your nearest station, run zeemist stations --near 37.8,-122.5 or visit the NOAA tide gauge map.
--observed to fetch real-time levels when the station supports it.zeemist fog
Estimate fog density for a coastal location over the next 24 hours.
zeemist fog [OPTIONS]
OPTIONS:
--lat <f> Latitude (decimal degrees)
--lon <f> Longitude (decimal degrees)
--profile <name> Use a saved location profile
--hours <N> Hours to forecast (default: 12, max: 48)
--json Structured output
The fog score (0–10) combines dew-point spread, marine boundary layer height, coastal upwelling index, and 10m wind speed. See How Zeemist estimates coastal fog density for the full model description.
zeemist surf
Show wave height, swell period, and wind windows for any coastal coordinate.
zeemist surf [OPTIONS]
OPTIONS:
--lat <f> Latitude
--lon <f> Longitude
--profile <name> Use a saved location profile
--days <N> Days ahead (default: 2, max: 7)
--activity <type> surf | kite | swim | kayak
--json Structured output
Passing --activity surf highlights 3–8 ft, 10–16 s swell windows with low local wind. --activity kite inverts the preference — it highlights 15–25 kn windows.
Configuration
Zeemist reads ~/.config/zeemist/config.toml on startup. A minimal example:
[defaults]
format = "table"
cache_ttl_minutes = 30
[[profiles]]
name = "rodeo"
lat = 37.834
lon = -122.552
station = "9414290"
[[profiles]]
name = "pacifica"
lat = 37.614
lon = -122.489
station = "9414131"
With a profile defined, zeemist tides --profile rodeo is equivalent to passing --lat 37.834 --lon -122.552 --station 9414290.
The full configuration reference is available in Installation & setup.