An open-source intelligence layer for adaptive grazing. See docs/vision.md for the thesis and product philosophy.
- Define farm boundaries and pasture zones
- Track herd metadata (species, count)
- Visualize all zones on an interactive map
- Vegetation health metrics (NDVI, EVI)
- Relative forage availability by pasture
- Regrowth trends over time
- Over/under-utilization indicators
- Which pasture to graze today
- Suggested area and duration
- Confidence score and assumptions
- Plain-language explanations
- Visual fence geometry for planning
- Copy-ready instructions for third-party virtual fencing tools
- Manual execution guidance
We use publicly available satellite imagery (primarily Sentinel-2) to compute vegetation indices across your farm. This provides:
- Scalable, low-cost land sensing
- Multispectral data for vegetation analysis
- Frequent revisits (daily to every few days)
- Historical archive for trend analysis
| Index | Purpose |
|---|---|
| NDVI | Primary vegetation health indicator |
| EVI | Enhanced sensitivity for dense pastures |
| NDWI | Water stress and drought detection |
- Query satellite imagery for your farm's area
- Apply cloud masking to remove unusable pixels
- Compute vegetation indices
- Aggregate time-series data (rolling means/medians)
- Calculate zonal statistics per pasture
- Score pasture readiness using transparent rules
- Generate recommendation with confidence level
The web app lives in app/. Prerequisites: Node.js 18+ and npm.
cd app
npm install
npm run devCommon scripts:
npm run dev- start the Vite dev servernpm run build- type-check and build for productionnpm run lint- run ESLintnpm run preview- preview the production build
Environment setup is documented in docs/environment.md.
Quick start:
cp app/.env.example app/.env.local
cp src/ingestion/.env.example src/ingestion/.env.localSet server-side keys (for Convex backend actions) in Convex Dashboard environment variables:
ANTHROPIC_API_KEY(required for AI recommendations)BRAINTRUST_API_KEY(optional observability)BRAINTRUST_PROJECT_NAME(optional, defaults tograzing-agent)GITHUB_TOKEN(optional, enables GitHub issue creation from reports)CONVEX_DEBUG(optional backend debug logging)
- Satellite Access: pystac-client, odc-stac
- Raster Processing: rasterio, xarray, numpy
- Tile Services: rio-tiler, TiTiler
- Geometry: GeoJSON, PostGIS (optional)
- Data Source: Microsoft Planetary Computer (Sentinel-2)
/
├── agents.md # AI agent reference
├── README.md # This file
├── app/ # Web application (Vite + React)
│ ├── public/
│ ├── src/
│ └── ...
├── docs/
│ ├── vision.md # Thesis and product philosophy
│ ├── architecture.md # Technical architecture details
│ ├── domain.md # Remote sensing domain knowledge
│ └── phasing.md # Development phases
└── ...
- Vision - Thesis and product philosophy
- Technical Architecture - System design and data flow
- Domain Knowledge - Remote sensing and vegetation science primer
- Environment Setup - Required and optional variables by runtime
See CONTRIBUTING.md for setup and contribution guidelines.
If you discover a vulnerability, see SECURITY.md.
Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.