LOCALSKY

LOCALSKY

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

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.

Local station readings do not require a cloud account or subscription.

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), 24-rule skip ladder. Drive OpenSprinkler directly, ESPHome, or your existing Home Assistant service calls.

Published weather and soil methods, with inputs and decisions you can inspect.

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.

24-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 required cloud account or telemetry. Internet requests depend on the forecast, map, controller, notification and advisor services you enable. Local station readings and history stay on your server.

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

See each zone's status and water need, open its plan and evidence, or run and stop it from the same view. Missing measurements remain unknown.

Zone cards with status, water needs and run controls

Decisions you can read

See what happened today and what is projected for tomorrow. Open Watering decisions for the plan, zone reasons, recent rain, delivered watering and forecast evidence.

Irrigation dashboard with Today and Tomorrow status, zone controls and forecast outlook

On your phone

Glanceable weather, forecasts, zone controls and a bottom tab bar for quick navigation.

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 marked, and source changes show when a restart is required.

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.