LOCALSKY

LOCALSKY

Hyperlocal weather on your hardware. Smart irrigation when you want it. No cloud, no subscription, no account.

LocalSky weather dashboard: live wind compass, rain gauge, lightning rings, pressure, solar irradiance, hourly forecast

Two products, one container

Self-hosted weather dashboarding for your station, plus an optional irrigation engine for when you have sprinklers. Each is useful on its own. Both run from a single Docker image.

Weather dashboard

Live observations from your Tempest or Ecowitt over the LAN. Multi-source forecast merge with per-field provenance so you know where every value came from. Built-in RainViewer radar (worldwide) + NEXRAD (US) + lightning radar.

No Weather Underground account. No Tempest cloud subscription. No rate limits.

Weather sources →

Smart irrigation, optional

FAO-56 Penman-Monteith reference ET, 13-species grass catalog, 7-class soil catalog (USDA texture classes, the standard used internationally), 17-rule skip ladder. Drive OpenSprinkler directly, ESPHome, or your existing Home Assistant service calls.

Same engine the meteorologists publish, the math you can audit, free forever.

Irrigation engine →

Quick start

Demo mode boots with simulated weather + four irrigation zones so you can explore the UI before connecting anything.

# Demo mode (no hardware required) docker run -d \ -p 8090:8090 \ -e LOCALSKY_DEMO=1 \ ghcr.io/silenthooligan/localsky:latest
Then visit http://localhost:8090. For a real install, drop LOCALSKY_DEMO, mount a config volume, and the first-run wizard at /setup walks you through location, weather sources, controllers, and zones.

For the weather

Your station data, plus the public forecast, plus radar, in one fast self-hosted dashboard.

Live observations

Tempest UDP rapid-wind compass, rain gauge, lightning strike rings, pressure, solar irradiance, UV index. Direct from your station over the LAN.

Multi-source forecast

Open-Meteo (global), NWS (US), MET Norway, Tempest. Per-field provenance shows which source provided each value. Hourly, daily, 7-day strip.

Radar + lightning

RainViewer precipitation playback (worldwide), IEM NEXRAD reflectivity (US), satellite IR, Tempest lightning rings. Layer toggles, legend, timeline scrub.

For the irrigation

Optional. Adds a peer-reviewed agronomic engine that turns weather into watering decisions, in plain language, with the math you can audit.

Native FAO-56 ET

Penman-Monteith reference ETâ‚€ with ASCE-EWRI 2005 + Hargreaves-Samani fallbacks. Hemisphere-aware Kc curves (correct in Sydney and Seattle alike), 13 grass species including Kikuyu, 7 soil textures.

Multi-controller HAL

OpenSprinkler direct, Rachio, Hydrawise, B-hyve, ESPHome, MQTT, or Home Assistant service calls. DryRun for demo and tests.

17-rule skip ladder

Rain now, rain next 4 hours, probability-weighted 3-day and 7-day rollups, freeze, soil saturation, soil frost, extreme heat (heat-index threshold). Tunable per deployment.

How it compares

Rachio makes an excellent controller. If you want local control, real soil sensing, and an engine you can read, here is the irrigation-by-irrigation breakdown.

Runs fully offline

LAN-only operation with a single optional outbound call. No cloud account, no subscription, no lock-in.

Real soil sensing

Per-zone moisture, calibration, plus EC and temperature trends drive skips and durations, not just a virtual bucket.

An engine you can read

Every skip carries a reason; the 7-day verdict and per-zone soil-moisture projection are right on the page.

Local-first, on purpose

Everything runs from a single Docker container on your own hardware. Open source, Apache-2.0, free forever.

Your data stays home

No account, no telemetry, no upstream upload. Open-Meteo is the only optional outbound call and it can be swapped for NWS (US), MET Norway, OpenWeather, or Pirate Weather.

Optional LLM advisor

Ollama auto-detect, llama.cpp, or any OpenAI-compatible endpoint (LM Studio, vLLM, private gateway). Runs locally if you want it. Off by default.

Installable PWA

iOS, Android, desktop. VAPID-signed push notifications. First-run wizard walks the empty state to a working install without touching YAML.

Zones with full visibility

Every decision the engine makes is on the page: tonight's plan, the soil probe reading against its target band, and the complete duration math. Run or stop any zone from the same view.

Zones master-detail with live soil sensor panel, target band, moisture projection, and run controls

Decisions you can read

The irrigation tab leads with one sentence: what runs, what skips, and why. Behind it sits the whole story: the 7-day verdict strip, every threshold live-tunable, and the forecast inputs the engine actually used.

Irrigation dashboard with next-run hero, skip reasoning, verdict strip, and forecast intelligence

A phone-first phone view

Not a shrunken desktop. Mobile gets its own layout: glanceable weather, swipeable forecasts, tap-through zones, and a bottom tab bar that stays out of the way.

Mobile weather view with hero conditions and telemetry tiles
Weather at a glance: hero conditions, live telemetry tiles, swipeable 48-hour and 7-day forecasts.
Mobile zone detail with soil sensor panel, history chart, and run controls
Tap a zone, get everything: soil probe vs target band, watering history, run controls, full duration math.

Five minutes to set up

A guided wizard takes you from empty container to working install: location, weather sources, controller scan, zones with a species catalog. Optional steps are clearly optional; nothing touches disk until you apply.

First-run wizard welcome step with progress bar and product pillars

Better together with Home Assistant

LocalSky never needs Home Assistant, but they pair like Music Assistant and HA: one integration, found automatically on your network. HA gets every reading, every zone valve, forecasts, and run / stop / pause services as native entities. LocalSky can use sensors and valves that only HA can reach. The watering brain stays in LocalSky.