Hand your garden to someone who truly knows it.
A gardener who knows your soil by heart, reads the sky before dawn, and gives every bed exactly the drink it needs. Then asks you for nothing at all.
You wanted a garden. Not a second job.
A box on the wall keeps its own counsel. It waters by the clock, never the weather, and the yard pays for the difference.
None of that is gardening. It is assisting a timer.
What you wanted is older and plainer. Someone who knows your ground, reads the morning, gives the thirsty bed a long drink and the shaded one a sip, and asks for nothing back.
That is what Maali means. Gardener. Hand it the yard, and the watering stops being yours to carry.
Twenty-one days of heat. It chose to water eight times.
Real Sacramento weather from July 2024, replayed through the very code that opens your valve. Watch it let the soil dry, sit out the cooler days, then decide a bed has earned a long drink.
No number to decode.
The app is served from the box itself, and it speaks plainly. These are its own screens, and its own words.
Every bed is a tub of water.
One glance from across the kitchen: this one is holding, that one is drinking now. The fill is the water left in the soil, nothing to read, nothing to convert.

The week is already decided.
Each run is laid out with the reason beside it. When a day is skipped, the app says which rule skipped it, in a sentence you would say yourself.

Weather, in the unit that matters.
Not degrees and percentages, but water. Lately the sky drank 1.42 inches from the yard.
That is the number the beds are measured against.

Every box asks you to give something up.
Three kinds sit on the shelf. Each solves the problem by making another.
- The dial is faithful, but deaf.The same minutes in a heat wave and a downpour. A valve that stuck open on Tuesday is open still.
- The smart one is clever, but not yours.Every decision routes through a cloud, paid features drift behind a plan, and the yard becomes somebody’s data.
- The open one is yours, but hard work.Honest ownership, a decade-old feel, and a wall of settings where a sentence should be.
Nothing to give up.
- Minds the soil, not the calendar
- Decides at home, even with the internet out
- Your yard, and its data, stay yours
- Explains itself in plain sentences
A timer knows the day. Maali knows the soil.
A timer knows what day it is. Your lawn does not care what day it is. It cares how much water is left in the soil. So every bed in Maali carries a running ledger: the sun and wind and thirsty roots take water out, the rain and the sprinklers put water back. That ledger is the whole brain.
One quiet idea, and you feel it everywhere. Four hot days with the power out earn a long drink when it wakes. Four cool days with rain earn nothing at all. Nobody wrote a catch-up rule for either one. The ledger simply still knew what the soil was owed. Nothing was missed, so there is no missed-run setting to fuss over.
Maali reads the daily thirst number from a free public weather service, the same number the chart above is drawn from. During setup it looks up the actual soil under your yard from the public soil survey, and it asks what is planted in words you would use over a fence: lawn, shrubs, natives. Nobody will ask you for a crop coefficient. If the weather feed goes quiet, it waters carefully from your local averages and says so right on the screen.
And then it tells you, in a sentence. You get minutes, and a because. Never inches, never coefficients, unless you go looking. And if you do like the numbers, they are all there, honest and editable, one tap deeper. Both kinds of gardener are welcome here.
If you cannot guess what your controller will do tomorrow morning, we have failed you. No pile of settings makes up for that.
However it fails, the water stops.
A watering computer can make exactly one unforgivable mess: water that will not stop. So pick a disaster, and watch which of the four layers is still standing when it lands.
The relay board closes the valve by itself
Every valve is switched on with a countdown that lives on the relay board. When it runs out, the board shuts the valve — no firmware, no network, not even controller power.
A second task watches the first
It enforces the longest a valve may ever run, and once a second asks the relays what they are really doing.
Bad programs are refused at save time
Checked the moment you save them against run caps, watering rules, and beds that would quarrel — before they can ever run.
Every command passes one gate
All the rules live together in one place. A rule the gate does not recognise means no, and every no is written down in plain language.
The layer that survives the most is the one with the least software in it. We tuned the alarms to hardly ever cry wolf, too — a false alarm that stops the water in a hot week hurts more than a small leak found a day later.
The whole thing lives in the little box by your valves.
That is not a slogan. The code is held to it as a rule: nothing outside your house can put water on your ground. Everything below follows from it.
There is nothing to sign up for. You choose a password for the box during setup, and that is the entire ceremony.
It makes exactly two calls out: one for the weather, one to ask if an update exists. Both optional. Nothing else ever leaves the building.
Your watering history, your soil, your bed names. They stay in the box. Nobody studies them, nobody bundles them, nobody sells them.
The whole app is served from the controller itself. No outside scripts, no borrowed fonts, nothing fetched from anywhere. It works with the internet unplugged.
If you run Home Assistant, Maali introduces itself and your beds, programs, and faults all appear on their own. Entirely optional; nothing leans on it.
The week's waterings come as a calendar feed any calendar app can subscribe to. The lawn's drink shows up right next to soccer practice.
Plain, honest web calls over your own network. Script it, poke it, wire it into whatever you already run. It is your controller, after all.
New firmware is signature-checked, tried in a spare slot, and quietly rolled back if it fails to wake up properly. Nothing installs itself unless you ask it to.
Keep a one-file backup of your whole setup. If a board ever dies, flash a fresh off-the-shelf one from your browser and restore the file. No waiting on us, and no yard to rebuild by hand.
You pay once, for parts, and then you are done paying.
The number that matters is the one you never pay again. No subscription, no per-feature tier, no cloud that has to keep running for your grass to get watered. You pay for good hardware once, and after that the only running cost is the water itself.
- 01Hardware you own, running software you rent
- 02Features that came in the box, later moved to a plan
- 03A retirement announcement you do not get a vote on
- 04A server somewhere that has to stay alive for your grass
- 01Ordinary electrical-cabinet parts, every one replaceable
- 02Not one part needs soldering, ever
- 03No subscription and no per-feature tier, now or later
- 04Eight more zones costs one more relay board
| Line | Part | USD |
|---|---|---|
| 01 | 24VAC transformer, Class 2, plug-in, and a 12V brick beside it | 29 |
| — | ESP32-S3 controller, 8-ch Modbus relay board, antenna | 58 |
| — | Enclosure, rail, terminal blocks, glands, wire, labels | 92 |
| Required, and it waters | 179 | |
| — | Flow sensor, its counter module, a rain gauge, the terminals they land on | 72 |
| — | Surge protection, two combined-mode DIN modules | 102 |
| Everything, senses and storm | 353 |
That $179 is the tier you cannot skip. Sensors add $72 and surge adds $102, which is where the $353 comes from. Surge is $102, not the $12 a parts catalogue suggests, because the cheap kind needs soldering and nothing in this build is allowed to. It is also the part that decides whether your controller shrugs off a lightning-season jolt arriving on 200 feet of buried valve wire. It is the last thing you should buy and the first thing you will be glad you did.
One afternoon, a screwdriver, and the wires already in your wall.
Everything lands on screw terminals. Everything clips onto one metal rail, and everything can later clip off again. No part is trapped, and no part is ours alone.
Order the parts
One list, supplier links, a spare source for every line.and a note on the three choices that change the price
Clip it to the rail
Power supply, controller, relays, surge, terminals. All five snap onto the one rail.no soldering, no drilling, no part trapped
Move the valve wires across
Pull the labelled wires off the old timer and land them on the new terminals.the old box comes off the wall last, once you are sure
Walk through setup
Your town, your soil, then bed by bed. Each bed runs for thirty seconds while you name it, so you watch your own sprinklers pop up as you type.a swapped pair of wires shows itself when it is still cheap to fix
Stop thinking about it
Set your district’s watering days once and go live your life. It waters, it explains, it emails nobody.and if anything ever goes wrong, it tells you which rule said no
It is on a bench, not yet in a yard. Here is the whole truth.
You are going to build this with your own hands, so you deserve the honest state of it rather than a launch page. The firmware is finished, and the safety promises have now been proven with real wires on a real bench. But it has not yet watered a real yard through a whole season, and this page will keep saying so until it has.
This is early. The firmware is finished and the safety is proven on the bench, but Maali has not yet watered a real yard through a whole season. We would rather tell you that plainly than dress it up, and this page will keep saying so until the season is behind us.
A greener yard, and a smaller water bill, on your terms.
Deep, infrequent watering grows deep roots. The ledger waits after rain, splits long runs into soaks so nothing runs down the driveway, and never once asks you to log in. Everyone is happy, especially the worms.
Start with the parts list