# fieldmesh > Layer zero of a farmer-owned farm stack. The data and device contract underneath everything else: what a reading is, what a device is, how a reading crosses an unreliable radio link, how its quality is judged, and how a farmer gets all of it back out. Pre-release, built against a simulated farm: no hardware in the loop yet, no pilot farm, and no commands to pumps or valves. The contract is OGC SensorThings 1.1 over an append-only log the farmer owns, with quality judgements that carry their provenance. Python 3.12; one runtime dependency (cbor2). Documentation CC-BY-4.0; SDK, simulator and tools Apache-2.0; server and modules AGPL-3.0-or-later. Every link below is the page's Markdown source. Repository: https://github.com/anun333/fieldmesh ## Start here - [fieldmesh](https://anun333.github.io/fieldmesh/README.md): The data and device contract underneath everything else: what a reading is, what a device is, how a reading crosses an unreliable radio link, how its quality is judged, and how a farmer gets all of it back out. - [Contributing](https://anun333.github.io/fieldmesh/CONTRIBUTING.md): Thank you for looking. fieldmesh is free software, and a farmer-owned farm-data stack: a specification, an SDK that implements it, a simulated farm that tests… - [Governance](https://anun333.github.io/fieldmesh/GOVERNANCE.md): fieldmesh calls itself farmer-owned. The software is built for that: a farm's log is the farm's, exports lose nothing, and sharing is by grant. The project… - [Licensing](https://anun333.github.io/fieldmesh/LICENSING.md): Decided 2026-10-07 (open-questions.md Q2). Three licenses, because the three kinds of artifact here have three different jobs. - [Language packs](https://anun333.github.io/fieldmesh/docs/LANGUAGE_PACKS.md): For a university, extension service or farmer organisation that wants fieldmesh to speak its people's language. No programming is needed: a language is one… - [What has not been tested](https://anun333.github.io/fieldmesh/docs/UNTESTED.md): This page lists, in one place, every claim this repository makes that has not been checked. For each it gives: - [The virtual farm — the sim as layer zero's substrate](https://anun333.github.io/fieldmesh/docs/VIRTUAL_FARM.md): A real farm shows you the faults it happens to have, in the order the weather supplies them, once per season. Layer zero's hardest clauses — the ones most… ## Specification - [Farm stack foundation layer: spec v0.1](https://anun333.github.io/fieldmesh/docs/spec/v0.1.md): Layer zero is the data and device contract every farm app builds on: identity, time, records, observations, devices, messaging and commands. It ships no… - [Open questions: every option](https://anun333.github.io/fieldmesh/docs/spec/open-questions.md): Each question lists all options considered, not just the two in the original draft, with the trade-off that decides between them and a recommendation.… ## Components - [Modules as systemd services (spec v0.1 §8.3; open-questions Q11)](https://anun333.github.io/fieldmesh/deploy/systemd/README.md): Each module runs as its own sandboxed service. Its only way to reach the farm's data is the module host's unix socket, and the host answers only what the… - [modules/advise/ — what to grow here, and when](https://anun333.github.io/fieldmesh/modules/advise/README.md): A layer-3 module (spec v0.1 §11, decision support) built on layer zero. Given a point, it reads thirty years of the place's weather, its soil and its plant… - [modules/board/ — the farm's page (layer 4)](https://anun333.github.io/fieldmesh/modules/board/README.md): The thinnest slice of an app (spec v0.1 §11, layer 4). A notification says that something happened; board.py shows what is still the case, on one read-only… - [modules/notify/ — alerts to people, escalating until someone answers (layer 1)](https://anun333.github.io/fieldmesh/modules/notify/README.md): Every module so far ends at a decision in the log (§7.7): a trough is empty, bed 3 needs water, it will frost in the tunnel tonight. A decision nobody reads… - [modules/rules/ — rules and alerts (layer 1)](https://anun333.github.io/fieldmesh/modules/rules/README.md): The first layer-1 module (spec v0.1 §11): rules written as CEL conditions (open-questions Q10) over a context built from the log, each evaluation written back… - [modules/salinity/ — salt building up in a bed (layer 2)](https://anun333.github.io/fieldmesh/modules/salinity/README.md): Under a tunnel no soaking rain washes salts below the roots, while fertilizer, compost and hard water keep adding them, so salt builds up season after season… - [modules/soilwater/ — soil-moisture advisory (layer 2)](https://anun333.github.io/fieldmesh/modules/soilwater/README.md): The second layer-2 module (spec v0.1 §11), and Q12's other read-only choice: every morning, and again early in the afternoon, for every bed, what to do about… - [modules/sowing/ — is the soil warm enough to sow? (layer 2)](https://anun333.github.io/fieldmesh/modules/sowing/README.md): Each morning, for each bed and each crop the farmer means to sow in it: the soil's temperature at seed depth over the last three days, against the… - [modules/twin/ — a physics twin for the hoop house (layer 3, Q28)](https://anun333.github.io/fieldmesh/modules/twin/README.md): GreenLight (Katzin et al., Wageningen University & Research; BSD-3-Clause-Clear) models a greenhouse's climate from first principles: the cover's shortwave… - [modules/water/ — livestock water monitor (layer 2)](https://anun333.github.io/fieldmesh/modules/water/README.md): The first layer-2 module (spec v0.1 §11), and the first of §15's three acceptance apps. Q12 chose it to ship first: a dry trough on a hot afternoon is an… - [modules/zoneflow/ — irrigation zone flow: a clogged head, a broken one (layer 2)](https://anun333.github.io/fieldmesh/modules/zoneflow/README.md): A zone's flow is the sum of its heads' flows. With a flow meter on the irrigation line, every run of every zone has a measured flow. OpenSprinkler reports it… - [sdk/ — layer zero as code](https://anun333.github.io/fieldmesh/sdk/README.md): Build-order step 1 from docs/VIRTUAL_FARM.md: the data model and the log, with no devices at all. Apache-2.0. Two dependencies: cbor2, for the CBOR wire… - [server/ — the reference implementation](https://anun333.github.io/fieldmesh/server/README.md): A read-only SensorThings 1.1 HTTP service over derived state (spec §10). AGPL-3.0-or-later — see LICENSING.md for why this directory carries a different… - [sim/ — the virtual farm](https://anun333.github.io/fieldmesh/sim/README.md): Build-order steps 2–4 from docs/VIRTUAL_FARM.md. Stdlib only (plus cbor2, via the SDK), Apache-2.0. ## Notes - [Weather forecasts as input data, and real weather in the virtual farm](https://anun333.github.io/fieldmesh/docs/notes/forecasts.md): Two additions, built together because each tests the other: layer zero takes weather forecasts as data (Q26), and the virtual farm can live through a real… - [Validated against FROST-Server](https://anun333.github.io/fieldmesh/docs/notes/frost-validation.md): Run 2026-10-07 against fraunhoferiosb/frost-server:latest with postgis/postgis:16-3.4. Companion to sdk/sensorthings.py. - [Sprinklers and drip: the open projects, where they meet this one, and what could flow each way](https://anun333.github.io/fieldmesh/docs/notes/irrigation-projects.md): Looked at on 2026-10-11. Licences and activity were read from each repository, and every claim about OpenSprinkler's messages from its firmware's source. - [Our health checks against ISMN's quality flags](https://anun333.github.io/fieldmesh/docs/notes/ismn-scoring.md): The §9.2 "replay of real recorded field data" that validation-data.md recommended, run for real: layer zero's §4.2 checks over 2,792,596 hourly readings from… - [Lawn sprinklers: the add-ons, and what each is worth](https://anun333.github.io/fieldmesh/docs/notes/lawn-sprinklers.md): A home lawn on an in-ground system usually has a timer, a few zones of spray heads and nothing else. This note asks which small additions to that hardware… - [Where a node's battery actually goes](https://anun333.github.io/fieldmesh/docs/notes/power-budget.md): Run 2026-10-07 with tools/power_budget.py. Reproduce with make power. - [Draft: comment on OGC SensorThings issue #174](https://anun333.github.io/fieldmesh/docs/notes/q18-ogc-issue-draft.md): The posted text differs from the draft below in two ways, both decided at send time: - [Q5 measured: which binary encoding](https://anun333.github.io/fieldmesh/docs/notes/q5-encoding-measurement.md): Run 2026-10-07 with tools/q5_encoding.py. Reproduce with make q5; the operating-point tables with make q5-points. - [Two real clients, pointed at the HTTP service](https://anun333.github.io/fieldmesh/docs/notes/qgis-validation.md): spec §10, VIRTUAL_FARM.md step 7's cheap half. The HTTP layer in server/ was written, tested against 69 of its own tests, and then handed to two clients… - [How deep the roots are, through a season](https://anun333.github.io/fieldmesh/docs/notes/root-depth.md): Written 2026-10-13. Two questions: how a well-watered crop's root depth runs with time, and what on a farm shows how deep the roots actually are. The… - [A real station, live: McAllister Farm's SCAN feed](https://anun333.github.io/fieldmesh/docs/notes/scan-live.md): Build step 7 wants a real device driver before hardware arrives. Q6's Plan B: read a real station's live feed through layer zero, as a node's readings would… - [What the SensorThings 2.0 draft looks like](https://anun333.github.io/fieldmesh/docs/notes/sensorthings-2.0.md): Read Oct 7, 2026, against the editor's rendering of OGC 23-019 and the published 1.1 standard (OGC 18-088). Written to answer one question: what changes for… - [The siting check on real soil](https://anun333.github.io/fieldmesh/docs/notes/siting-real-soil.md): The §4.1 depth-from-temperature siting check (sdk/siting.py) had only ever met the simulator's heat model. ISMN carries real soil temperature at five depths… - [Soil water models: how others do it, and what the simulator takes](https://anun333.github.io/fieldmesh/docs/notes/soil-models.md): Written 2026-10-16. The soil advisory is backtested on a simulated farm (sim/physics.py), and its results turn on how that soil moves water: on 2026-10-15 the… - [In the soil, besides moisture: temperature, tension, salinity, drainage](https://anun333.github.io/fieldmesh/docs/notes/soil-sensors-beyond-moisture.md): Written 2026-10-12. The soil-moisture probes are in soil sensors; this note is the other things worth putting in the ground, in the order they are worth it to… - [Soil moisture sensors to recommend](https://anun333.github.io/fieldmesh/docs/notes/soil-sensors.md): Which soil probes a farm on fieldmesh should be pointed to, how each reaches the log, and what fieldmesh's own evidence says about choosing and installing… - [The soil-moisture advisory's backtests, 2026-10-11 to 2026-10-19](https://anun333.github.io/fieldmesh/docs/notes/soilwater-backtests.md): The record of what the soil-moisture advisory was tried on, on the virtual farm as each day had it, and what each try showed: the tables that once stood in… - [Spikes and jumps on real soil](https://anun333.github.io/fieldmesh/docs/notes/spikes-and-jumps.md): Open question Q23 found that §4.2's rate check cannot fire at hourly sampling — it caught none of 1,849 readings ISMN flags as spikes or jumps at the three… - [Real devices to test against, without owning them](https://anun333.github.io/fieldmesh/docs/notes/test-data-sources.md): Written 2026-10-13, from a question: are there sites, vendors' or others', that give free access to hardware's data, so fieldmesh can be tested before a farm… - [Is public data enough to really test this?](https://anun333.github.io/fieldmesh/docs/notes/validation-data.md): Researched 2026-10-07, after testing the APIs rather than reading about them. - [Water meters and head flows: the arithmetic of a clogged head](https://anun333.github.io/fieldmesh/docs/notes/water-meters.md): Saved 2026-10-11. Items 1–3 below were built the same day, as modules/zoneflow; item 4 on 2026-10-12. - [Weather stations to recommend](https://anun333.github.io/fieldmesh/docs/notes/weather-stations.md): Which weather stations a farm on fieldmesh should be pointed to, and the ideas around them: what to measure, where to put it, how to check it, and how it gets… ## Optional - [Code of conduct](https://anun333.github.io/fieldmesh/CODE_OF_CONDUCT.md): This project exists for farmers, many of whom are not programmers and many of whom do not speak English. Contributions are judged on what they do for them. - [Security](https://anun333.github.io/fieldmesh/SECURITY.md): fieldmesh will hold farms' data and, later, command pumps and valves. A flaw in it can expose a farm's records or, eventually, act on its equipment, so please… - [Farm stack foundation layer: spec v0](https://anun333.github.io/fieldmesh/docs/spec/v0.md): Layer zero is the data and device contract every farm app builds on: identity, time, records, observations, devices, messaging and commands. It ships no… - [The same farm, 2041–2070, SSP2-4.5](https://anun333.github.io/fieldmesh/modules/advise/notes/advise-mcallister-2050s.en.md): The site's own thirty years of weather, each month changed by the median of five CMIP6 models (ACCESS-CM2, GFDL-ESM4, MPI-ESM1-2-HR, MRI-ESM2-0, NorESM2-MM)… - [La misma finca, 2041–2070, SSP2-4.5](https://anun333.github.io/fieldmesh/modules/advise/notes/advise-mcallister-2050s.es.md): Los treinta años de tiempo del propio sitio, cada mes cambiado según la mediana de cinco modelos CMIP6 (ACCESS-CM2, GFDL-ESM4, MPI-ESM1-2-HR, MRI-ESM2-0… - [What grows at 35.0645, -86.5914](https://anun333.github.io/fieldmesh/modules/advise/notes/advise-mcallister.en.md): Generated 2026-10-09 from open data. These are starting points, not answers: check them against local knowledge, a soil test, and your own records. - [Qué crece en 35,0645; -86,5914](https://anun333.github.io/fieldmesh/modules/advise/notes/advise-mcallister.es.md): Generado el 2026-10-09 a partir de datos abiertos. Son puntos de partida, no respuestas: contrástelos con el conocimiento local, un análisis de suelo y sus… - [Where the advisor lives — a proposal](https://anun333.github.io/fieldmesh/modules/advise/notes/advisor-home-proposal.md): 2026-10-08, decided 2026-10-09: option B, AGPL-3.0-or-later, named advise — the maintainer adopted the recommendation, and the advisor now lives in… - [Animals, bees, flowers and fertilizers — and what mixes with what](https://anun333.github.io/fieldmesh/modules/advise/notes/animals-bees-and-inputs.md): A plan, saved for later — nothing here is built yet. The companion to plant-conditions.md. The same idea, extended: every living thing on a farm, and every… - [Hoop houses and other cover](https://anun333.github.io/fieldmesh/modules/advise/notes/hoop-houses.md): A companion to plant-conditions.md. A hoop house — a high tunnel — is a second site inside the farm, with its own climate. It is also the place where… - [Nursery: baby trees, transplants and other starts](https://anun333.github.io/fieldmesh/modules/advise/notes/nursery.md): A plan, saved for later — nothing here is built yet. The fourth companion to plant-conditions.md. A nursery sells the plants on the other lists young… - [Plant growing conditions: the list, the dimensions, the sources](https://anun333.github.io/fieldmesh/modules/advise/notes/plant-conditions.md): A plan, saved for later — nothing here is built yet. The idea: for each plantable plant, dig out the conditions it grows best in — soil, water, climate, light… - [What grows at three Tennessee farms, and why not](https://anun333.github.io/fieldmesh/modules/advise/notes/site-match-tennessee.md): The first working run of the plan in plant-conditions.md: the plant list turned into data, three sites profiled, the plants matched against them, and the bee… - [Tree farms, and planting against erosion](https://anun333.github.io/fieldmesh/modules/advise/notes/trees-and-conservation-planting.md): A plan, saved for later — nothing here is built yet. The third companion to plant-conditions.md and animals-bees-and-inputs.md. The species are in… - [Provenance of the code in sdk/](https://anun333.github.io/fieldmesh/sdk/PROVENANCE.md): Everything here originates in campus_twin (~/dev/campus_twin), the sibling buildings/BAS platform by the same author. It arrives by copy and relicense, not by… - [Vocabulary](https://anun333.github.io/fieldmesh/vocab/vocab.jsonld): the local observed-property terms as SKOS JSON-LD