Offline-first garden appliance

A smart computer for the garden.

Local soil sensing, weather-aware watering and plant-health AI on hardware you own. No account. Nothing leaves your network unless you send it.

Raspberry Pi 4 or 5, or a clone · 4 GB RAM minimum·AGPL-3.0

The interface below is live. Click through it.

GardenOS at a glance

What used to take a hub, an app and a subscription now takes one box.

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.

Sensing

Ecowitt soil probes broadcast on 915 MHz. An RTL-SDR on the stake hears them directly — no gateway, no cloud hop.

The sensor network

Watering

Checks soil and forecast before it opens a valve, then explains the call in one plain sentence. Disarmed until you say otherwise.

Auto Water

Plant Doctor

Photograph a leaf, get a diagnosis. Your own API key, your own terms — no relay, no central log.

Plant Doctor

Almanac

Tracks each plant from seed to harvest, schedules feeding and pruning by stage, and sends one weekly digest instead of noise.

The Almanac
The sensor network

A sensor in every bed, and no gateway required.

GardenOS 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.

  • No proprietary hub, no vendor gateway, no subscription
  • WH51 reads moisture. The WH52 adds soil temperature and EC
  • EC is soil salinity — it shows whether fertilizer is building up or running out, so feeding follows a measurement instead of a calendar
  • Rain gauge measures what actually fell on your garden
  • One AA cell per sensor, rated for about a year
  • Sensors keep reporting when the internet is down
  • 868 MHz in Europe, same hardware
GardenOS Bed 1 WH51 · 38% 1×AA Bed 2 WH52 · 19% + temp, EC Bed 3 WH51 · 52% 1×AA 915 MHz ISM · one-way FSK/OOK · no gateway
Auto Water

It checks the weather before it waters.

Soil reading first, forecast second, then a valve. Every run and every skip is logged with the reason.

  • Per-bed moisture floors, not one number for the whole yard
  • Rain in the forecast cancels the run instead of drowning the bed
  • Valves stay disarmed until you explicitly arm them
  • Drives the Wi-Fi hose timer you already own, through Home Assistant
  • Tuya, Smart Life and HomeKit valves run entirely on your LAN
  • One hose timer splits across beds with a drip manifold
The hardware

One way to build one.

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.

ComputerRaspberry Pi 4 or 5, or a clone. 4 GB RAM minimum
Storage32 GB microSD minimum. The OS, Docker and a season of readings come to about 8 GB
EndurancePlan on replacing the card. A Pi writing logs around the clock wears one out in a season or two — a high-endurance card, the kind sold for dashcams and security cameras, lasts longer than a fast one. Or sidestep it: a USB SSD outlasts any card, and the Pi 4 will boot from one — or keep the card for the system and put the readings and photos on the SSD
RadioRTL-SDR Blog v3 + 915 MHz antenna
ScreenOptional. 5″ HDMI panel or 10″ touchscreen
PowerMains, or 10 W solar with battery and controller
EnclosureWeatherproof, IP65 or better, light color
MountFiberglass garden stake, or a camera tripod
SensorsEcowitt WH51 per bed; WH52 adds temp and salinity
Compatibility

Works with the Wi-Fi timer you already own.

GardenOS sends watering commands through Home Assistant, so it works with any timer Home Assistant can control. These are the ones known to work.

no hub · no cloud

Tuya and Smart Life

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.

Reported workingMoes · Diivoo · Insoma · Johgee · RainPoint T-series · Holman · Shrivee · Inkbird · MoistenLand · Unistyle · Eshico · FrankEver · Zemismart · Aquarobo · NEO Coolcam · Haozee · K-Rain
Choose one without a hubtimers that join your Wi-Fi directly are simpler than ones behind a gateway box
Setupa free Tuya developer account, once, to read the device key — after that nothing leaves your network
hub included · no cloud

HomeKit timers

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.

Merossthe hub must be the MSH400 — the MSH450 looks identical and does not do HomeKitcheck model
Eve Aquaworks, but over Thread — you need a border router such as an Apple TV or HomePod
Setupnothing to configure. Pair the hub and the timer appears
account required

Cloud-connected

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.

Orbit B-hyvehub and account requiredtesting now
Rachiosmart hose timers — Wi-Fi hub and account required
RainPoint H-serieshub and account, through the HomGar integration. The T-series is Tuya instead — check the model numbercheck model
LinkTaphub required, but no account — its local API is a supported featurelocal API
Roadmap

What works now, and what is planned.

A checklist that follows the garden, not a calendar.

Running today

  • Soil-aware watering decisions, each explained in a plain sentence
  • Valve control through Home Assistant, disarmed by default
  • Plant catalogue with real daylight-hour ranges
  • Garden journal with photos
  • AI plant doctor with your own API key
  • Almanac and a weekly digest to your phone
  • Pairing-based access — no account, nothing to leak

Being built

  • Wi-Fi setup on the device itself, as its own access point
  • Boot and welcome sequence, so it starts like an appliance
  • Soil sensors received directly over 915 MHz, no gateway
  • Soil salinity from the newer sensors — measured, not calendared

On the list

  • A weather station on the same radio, so watering follows evaporation
  • Beds that calibrate their own field capacity
  • A manual mode that works with no sensors at all
  • Backup and restore, so a dead SD card does not cost a season
  • A sun map
  • Our own hose-bib controller
Build one

It is a project, not a product.

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.

provision-gardenos.sh
# 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