A multi-agent AI design system and a pair of TypeScript analytics dashboards for monitoring and optimizing VPD (Vapor Pressure Deficit) and environmental conditions in AgroUrbana's hydroponic vertical-farming operation.
IvY ("Growing Intelligence") brings together everything used to turn raw hydroponic sensor exports into actionable agronomic decisions. The repository contains three complementary parts, all built around the same domain β vertical-farming crop optimization for lettuce and basil.
- π€ IvY Ecosystem (
agent1/) β A documented multi-agent system: 14 specialized AI agent definitions (coordination, backend, domain, frontend and quality experts) written as structured Markdown briefs. Each agent has a clear role, responsibilities and collaboration map, designed to be orchestrated as a coordinated team for the VPD-analysis project. These are prompt/persona specifications, not a running service β a reusable blueprint for AI-assisted development of the data apps. - π DataRabbit β Advanced Dashboard (
data_rabbit/) β The flagship analytics app (v2.0). A React + TypeScript dashboard for in-depth weekly analysis, week-over-week comparison, temporal evolution charts and statistical insight over CSV sensor exports. - π Rabbit Data β Core Monitor (
src/) β The original, lighter monitoring app (v0.1). Uploads CSV data, persists it locally in IndexedDB, renders raw-data tables and lets the user configure optimal target ranges per growing area.
Note on naming: "Rabbit" is the product brand for these dashboards β there is no RabbitMQ / message-broker component in this project.
flowchart TD
subgraph Source["π± Data Source"]
HA["Home Assistant / Grafana<br/>sensor exports"]
CSV["P2.csv β temperature, humidity,<br/>VPD, CO2, light state per island"]
end
subgraph Agents["π€ agent1 β IvY Ecosystem (AI agent specs)"]
MASTER["IvY-Master<br/>Coordinator"]
BE["Backend Experts<br/>JS-Algorithms Β· NodeJS-Excel"]
DOM["Domain Experts<br/>VPD-Scientist Β· Crop-Optimizer Β· AgroUrbana-Analyst"]
FE["Frontend Experts<br/>React19 Β· TypeScript Β· Recharts Β· CSS"]
QA["Quality Experts<br/>Jest-Tester Β· Agro-QA"]
MASTER --> BE & DOM & FE & QA
end
subgraph Apps["π TypeScript Applications"]
DR["DataRabbit (data_rabbit/)<br/>React 18 Β· Tailwind Β· Recharts Β· PapaParse"]
RD["Rabbit Data (src/)<br/>React 19 Β· IndexedDB Β· Plotly.js"]
end
subgraph Output["π Insight"]
VIZ["Weekly analysis Β· Evolution charts<br/>Comparisons Β· Target deviations Β· Alerts"]
end
HA --> CSV
CSV --> DR
CSV --> RD
Agents -.->|design & build| Apps
DR --> VIZ
RD --> VIZ
VPD is computed from temperature and relative humidity per growing island and compared against crop-specific optimal ranges:
VPD = 0.6108 Β· e^(17.27Β·T / (T + 237.3)) Β· (1 β RH / 100)
- Detailed weekly analysis β per-parameter averages, time-out-of-range, min/max and dynamic trend calculation (linear regression).
- Week-over-week comparison β absolute and percentage deltas with automatic interpretation.
- Temporal evolution charts β multi-island selection, configurable week ranges, average overlays for temperature, humidity, VPD, CO2 and light usage.
- Per-island crop configuration β π₯¬ lettuce / πΏ basil with dynamic target ranges and rotating harvest cycle.
- Statistical insight β standard deviation, coefficient of variation, parameter stability and intuitive bias icons (π₯/βοΈ, π§/βοΈ, π/π, β ).
- Light-hour tracking β weekly light-usage percentage per island.
- CSV ingestion with local IndexedDB persistence (works fully client-side).
- Raw-data tables per section (Parcela 2 / AlmΓ‘cigo).
- Configurable target ranges (temperature, humidity, CO2, pH, EC, VPD) for day/night, persisted across sessions.
- 14 specialized agent briefs with roles, responsibilities and collaboration maps.
- Sprint-planning and task-tracking coordination documents.
- Mermaid diagrams of data flow, agent interactions and decision logic.
| Layer | DataRabbit (data_rabbit/) |
Rabbit Data (src/) |
|---|---|---|
| Language | TypeScript | TypeScript |
| UI | React 18 | React 19 |
| Charts | Recharts 2.x | Plotly.js |
| Styling | Tailwind CSS 3.x | CSS3 |
| CSV parsing | PapaParse | Custom parser |
| Storage | In-memory / persistent hooks | IndexedDB (idb) |
| Icons | Lucide React | β |
| Tooling | Create React App, ESLint | Create React App, ESLint |
Helper scripts (data_rabbit/analyze_lights.py, data_rabbit/analyze.sh) provide quick Python/CLI analysis of light-state columns.
Requires Node.js 18+ and npm.
cd data_rabbit
npm install
npm start # http://localhost:3000Load the included data_rabbit/P2.csv (or your own export) from the sidebar; configure crops per island as needed.
npm install
npm start # http://localhost:3000Upload a CSV from the start screen; data is processed and stored in your browser's IndexedDB.
Time-series rows with one column per island and parameter, e.g.:
Time,I1 Temperatura Promedio,...,I1 VPD,...,CO2 Promedio,I1 Estado Luz,...,Week Number
07-04-25 0:00,19.4,...,0.81,...,623,1,...,15No environment variables or API keys are required β both apps run entirely client-side.
IvY_agents/
βββ src/ # Rabbit Data β core monitor (React 19 + IndexedDB)
β βββ components/ # FileUpload, DataTable, TargetsConfig, navigation
β βββ services/ # dataProcessor.ts, db.ts (IndexedDB)
β βββ types/ # TypeScript domain models
βββ data_rabbit/ # DataRabbit β advanced dashboard (React 18 + Tailwind + Recharts)
β βββ src/components/ # Weekly analysis, evolution, comparison, charts
β βββ src/utils/ # dataProcessor.ts, constants.ts (crop targets)
β βββ src/hooks/ # usePersistentState
β βββ analyze_lights.py # Python helper for light-state analysis
β βββ P2.csv # Example sensor dataset (Parcela 2)
βββ agent1/ # IvY Ecosystem β 14 AI agent specifications
β βββ IvY-Master.md # Coordinator agent
β βββ backend-experts/ # JS-Algorithms, NodeJS-Excel
β βββ domain-experts/ # VPD-Scientist, Crop-Optimizer, AgroUrbana-Analyst
β βββ frontend-experts/ # React19, TypeScript, Recharts, CSS
β βββ quality-experts/ # Jest-Tester, Agro-QA
β βββ coordination/ # sprint-planning, task-tracker
βββ public/ # CRA static assets
βββ LICENSE
Component-level documentation lives in data_rabbit/README.md and agent1/README.md (Spanish).
Built for AgroUrbana, a Chilean vertical-farming company, this suite analyzes Parcela 2 β a hydroponic system of 6 growing islands across two sectors, cultivating lettuce (Jagger, Bassari, Flandria, Scamander) and basil. The goal is to keep each crop within its optimal VPD, temperature, humidity and CO2 envelope through the germination β seedling β fattening β harvest cycle, prioritizing environmental stability to maximize yield.
Distributed under the MIT License. See LICENSE for details.
IvY Ecosystem β turning sensor data into intelligent decisions for the future of vertical farming.