Why it exists

I grew up near the North Sea coast in the Netherlands and moved to the San Francisco Bay Area about eight years ago. Both coastlines have fog in common — the kind that arrives overnight without warning and makes you regret not checking the forecast more carefully.

The problem is that general-purpose weather apps handle coastal fog badly. They'll tell you it's cloudy when there's actually dense sea fog at the water and clear sky 500 meters inland. They report visibility at the nearest airport, which is often several kilometers from the water. And they don't give you the tide information that determines whether a spot is actually accessible.

I wanted a single command I could run in the morning before deciding whether to drive out to the coast. Something that combined tides, fog, and swell into one compact output. I couldn't find it, so I built it.

The first version was a messy Python script that I ran from a shell alias. By the time I'd added enough features to share it, I rewrote it in Rust to learn the language, and that's what Zeemist is now.

What it's not trying to be

Zeemist is not a surf forecast app. It doesn't account for local reef or beach conditions, and it can't tell you whether a specific break is firing. For that you want something like Surfline or Magic Seaweed, both of which have people on the water ground-truthing their forecasts.

It's also not a navigation tool. The tide predictions come from NOAA's harmonic model, which is accurate to within about 0.5 ft under normal conditions, but "normal conditions" excludes storm surge, major wind events, and river flooding. Don't use it for anything safety-critical.

Tech stack

Zeemist is written in Rust (MSRV 1.75). It uses:

No database, no server side, no telemetry. The binary is statically linked (musl on Linux) so it runs on any x86-64 or ARM64 Linux without libc version concerns.

This site is hand-written HTML and CSS, served by nginx. No build step, no framework, no JavaScript. I find it relaxing to work at that level occasionally.

Contact

Bug reports and feature requests go in the issue tracker. For anything else: hello [at] zeemist.cfd. I read everything; I don't always reply quickly.