Local soil sensing, weather-aware watering and plant-health AI on hardware you own. No account. Nothing leaves your network unless you send it.
The interface below is live. Click through it.
A radio, a small computer and sensors in the dirt. Everything decides locally, and every decision it makes is written down in a sentence you can read.
Ecowitt soil probes broadcast on 915 MHz. An RTL-SDR on the stake hears them directly — no gateway, no cloud hop.
The sensor networkChecks soil and forecast before it opens a valve, then explains the call in one plain sentence. Disarmed until you say otherwise.
Auto WaterPhotograph a leaf, get a diagnosis. Your own API key, your own terms — no relay, no central log.
Plant DoctorTracks each plant from seed to harvest, schedules feeding and pruning by stage, and sends one weekly digest instead of noise.
The AlmanacGardenOS talks to Ecowitt soil sensors directly over 915 MHz — no gateway, no bridge, no vendor hub in between. Each probe sits in a root zone on a single AA cell.
Soil reading first, forecast second, then a valve. Every run and every skip is logged with the reason.
Off-the-shelf parts, staked in a bed or bolted to a tripod. Keep the antenna vertical and the box a light color. Or skip the hardware entirely and run it in a container.
GardenOS sends watering commands through Home Assistant, so it works with any timer Home Assistant can control. These are the ones known to work.
The largest group, sold under many brand names. If the listing tells you to install Smart Life or Tuya Smart, it is one of these. The tuya-local project controls them over your own network.
HomeKit works over your local network, so Home Assistant controls these directly and never through the manufacturer's servers. Meross is the common one, and the hub comes in the box.
The easiest to set up, and they work well. The trade is that watering commands go through the manufacturer's servers — so you need an internet connection and an account, and the timer stops working if the company shuts the service down.
A checklist that follows the garden, not a calendar.
Flash a card, run the provisioning script, plug in the radio. The script installs the RTL-SDR toolchain and blacklists the kernel driver that would otherwise claim the radio.
# 1 · flash Pi OS Lite, then run the provisioner on the Pi scp provision-gardenos.sh gardenos.local:~ ssh gardenos.local ./provision-gardenos.sh # It installs the RTL-SDR toolchain, then gets the kernel out # of the way. The radio is built on a DVB-T chip, so Linux binds # its own driver the moment it is plugged in — after which every # rtl_ tool fails with "device busy". sudo tee /etc/modprobe.d/blacklist-rtl.conf <<'EOF' blacklist dvb_usb_rtl28xxu blacklist rtl2832 blacklist rtl2830 EOF sudo modprobe -r dvb_usb_rtl28xxu # 2 · confirm the radio came up lsusb | grep -i RTL283