Microclimate intelligence for agriculture — measured on the grower's own land.
A weather station thirty kilometres away tells you about a city. It does not tell you whether the leaves in your block stayed wet long enough for an infection to start. Vates puts the measurement inside the crop, turns it into agronomy, and gives the grower a reason to act while acting still helps.
A public technical overview of how Vates is built: the architecture, the engineering decisions and the reasoning behind them.
It contains no source code. No configuration, no schemas, no endpoints, no keys, no credentials. Everything here is a description of a system, written to be read — by an engineer deciding whether to work with us, a partner deciding whether to integrate, or anyone curious about what it actually takes to get a reliable number out of a field and turn it into a decision.
If you want to talk about the parts that are not here, the maintainers are at the bottom of this page.
Agricultural decisions are made against microclimate, and microclimate is local to a degree that surprises people. Two blocks on the same property, four hundred metres apart, can sit in different infection windows on the same night — one in a hollow that holds dew until nine in the morning, the other on a rise that dries by seven.
The grower is usually working from one of three things:
- a public weather station, tens of kilometres away, measuring somewhere else
- a calendar-based spray programme, applied whether the risk is there or not
- experience, which is real and valuable and does not scale past what one person can walk in a day
None of the three can tell you that last night, in block D, the leaf stayed wet for eleven hours at nineteen degrees — which is the sentence a disease model actually needs.
So the first problem is not software. It is getting a trustworthy measurement out of a place with no mains power, no network and nobody to visit it.
Four layers. Each has its own document, and its own honest status.
A solar-powered node on a post, asleep for all but a few seconds of every three minutes. It measures air temperature, relative humidity and leaf wetness — and it reports on its own condition, which turns out to matter just as much.
→ Field layer — the node, the sensors, the energy budget and the self-telemetry
The node's entire design follows from one constraint: nobody is going to change a battery. Everything the firmware does is arranged around making the awake window short and the sleep genuinely quiet.
And because a network you cannot inspect from a desk is a network you will spend your life driving out to, every packet carries the node's own health alongside the reading:
Long-range, low-power radio in a licence-free band. Point to point, encrypted, no subscription per node, no dependence on a carrier reaching the middle of a field.
→ Radio link — the frame, the encryption, and why not a standard network stack
One always-on receiver per property. It owns the only connection to the outside world, and it treats every packet as untrustworthy until proven otherwise.
→ Gateway — the receive path, the rejection rules, and what the gateway adds that a node cannot know
Ingestion, an append-only history, and an engine that recomputes agronomic models on its own schedule so that nothing is calculated while a grower waits for a page.
→ Data platform — ingestion, storage and the computation model → Agronomic models — what the platform actually calculates, and for which crops
Agronomy enters the platform as plug-in models rather than as branches in the code. This is what lets one platform serve a vineyard, a soybean field and an indoor crop without any of them becoming a special case.
A risk score with no reasoning behind it is a score nobody trusts twice. We keep the path — this humidity, held this long, at this temperature — so that an alert can show its own working and an agronomist can disagree with it in specific terms.
Nobody can reconstruct a year of microclimate after the fact. Either it was recorded as it happened, with a place and a time on every entry, or it is gone. That record turns out to be useful far beyond the reason it was collected.
Small, well-bounded services. Decisions written down when they are made, not reconstructed afterwards. A bias toward the boring option in the field, where a bug costs a two-hour drive.
→ How we build → Architecture decisions — the trade-offs, including the ones we are not sure about
We would rather you knew which parts are real.
| Badge | Meaning |
|---|---|
IN FIELD |
Deployed on working properties and reporting today |
RUNNING |
Live in the platform, in use |
IN DEVELOPMENT |
Being built now, partially working |
DESIGNED |
Designed and specified, not yet built |
Today — vineyard and indoor cultivation running on our own hardware, with per-crop agronomic models. Solar nodes in the field, reporting every three minutes.
Next — a wider crop portfolio, starting with soybean. Explainable risk models. Sealed periods for the traceability record.
Where we are going — the microclimate intelligence layer for growers who are not large enough to have their own agronomy department, and should not have to be.
Built by @christianrogergaio and @julianogaio.
Questions about the architecture, the hardware or a possible integration are welcome — open an issue or reach either of us directly.
Diagrams in this repository are drawn by hand and version-controlled as SVG.
See diagrams/ for the full set.