Inference and Homelab Compute

Verdify is intentionally local-first. The greenhouse relay loop runs on the ESP32, but the surrounding intelligence layer uses the Vallery homelab for planning support, retrieval, embeddings, vision, media analysis, and agent coordination.

The public site mirrors a small, public-safe subset of the same DCGM and node-exporter feeds that Nexus Prometheus and Vallery Grafana use. That keeps Grafana/Auth tokens out of browsers while still showing the real watts and utilization behind the AI layer.

Fleet Roles

Cortexvm-docker-ai / 2x RTX 4070 Ti Super

Local inference, embeddings, retrieval, and agent workloads. This is the main AI compute surface behind Iris, the AI planner and OpenClaw.

Sentinelvm-docker-frigate / 2x RTX 3060

Camera ingest, Frigate, greenhouse video, and visual evidence workflows. It connects the greenhouse story to observed state, not just scalar sensors.

Immichvm-docker-immich / RTX 5070

Photo and media ML, CLIP search, and archive embeddings. It is part of the broader Vallery AI surface and contributes to the total five-GPU power graph.

Irisvm-docker-iris / CPU

Greenhouse ingestion, planner support, API jobs, MCP tools, scorecards, and public site data jobs.

Webvm-docker-web / CPU

Public publishing and web jobs that turn operational data into readable evidence.

Control Boundary

The inference fleet helps Iris understand context and write bounded tactical intent. It does not directly actuate greenhouse hardware. The dispatcher validates plan output, and the ESP32 owns real-time relay decisions every 5 seconds.

This split matters because GPU-backed planning can be slow, bursty, experimental, or temporarily unavailable. Plant safety should not depend on a model server answering at the exact moment a fan, heater, vent, fogger, or mister needs a deterministic decision.

Nexus Relationship

Nexus remains the observability center: Prometheus scrapes exporters, Grafana renders the operator dashboards, and alerts measure fleet health. Verdify mirrors selected DCGM and node-exporter samples into TimescaleDB for public pages because the public site should not expose Nexus authentication, Grafana cookies, or raw infrastructure internals.

The same principle applies across the site: publish enough evidence to make the system inspectable, but keep privileged operations and safety-critical controls behind the operational boundary.