← zander.sh

Smart Plant Monitor

An ESP32 with a camera module, an LLM agent, and a Telegram account. The idea: give your houseplants a personality and let them text you when they're unhappy. Currently in early development.

// Why I'm Building This

This started with the Clawdbot / Moltbot / OpenClaw hype. I saw the funny interactions people were having on X with their AI agents interacting with the real world, and I stewed on fun ways I could build something with that paradigm. I was already building Astrud — my personal AI agent — so the idea of giving a personality to something physical was already on my mind.

My girlfriend and I are looking at apartments, so naturally we're thinking about things to put in one. She has some plants. And I thought — how great would it be if our plants could text us and complain if they aren't happy?

If the moisture is too low for their liking, or if their leaves are a little wilty, they might reach out: “When are you coming home? I'm really thirsty :(”. Or if they saw a cat on the camera: “THERE IS A CAT HELP ME IM GOING TO BE EATEN IF YOU DONT COME HOME RIGHT NOW, THIS IS NOT A DRILL”.

// How It Will Work
ESP32 camera over WebSocket

I've got an ESP32 with a camera module that connects to a WebSocket server running in Python on my VPS. The image fetching is already working — the hardware can capture and transmit photos on demand. This is the plant's eyes.

The agent as personality

The plant will be an agent hosted inside Astrud, my personal agent platform. Each plant gets its own personality, its own Telegram presence, and its own set of connectors to hardware. The agent can call a tool to take its own selfie and get real-time readings from its sensors. When something changes — soil drying out, light shifting, a suspicious animal in frame — it decides whether to reach out and what to say.

Soil monitoring (TBD)

I'm going back and forth on the soil monitoring approach. The first option is capacitive soil sensors wired to the ESP32 — the plant calls a tool to get its real-time readings alongside its selfie. The second option is a probe-type soil reader visible in the camera frame, then using an image recognition model to read the data from the photo. It's a matter of sitting down and figuring out how they differ in accuracy and price.

// Architecture (Planned)
┌──────────────┐     ┌────────────────────────────┐
│   ESP32 +    │     │     Astrud Agent Platform   │
│   Camera     │────►│                            │
│   (+ soil?)  │ WS  │  ┌────────────────────┐    │
└──────────────┘     │  │  Plant Agent       │    │
                     │  │  (personality +    │    │
                     │  │   tool access)     │    │
                     │  └────────┬───────────┘    │
┌──────────────┐     │           │                │
│   Telegram   │◄───►│  ┌───────▼────────────┐   │
│              │     │  │  Connectors        │   │
│              │     │  │  (camera, sensors,  │   │
└──────────────┘     │  │   messaging)       │   │
                     │  └────────────────────┘   │
                     └────────────────────────────┘

The plant agent will be hosted inside Astrud's multi-agent platform, not as a standalone service. Each agent in Astrud gets its own set of connectors — the plant's connectors happen to be a camera, soil sensors, and a Telegram account. The WebSocket connection from the ESP32 feeds into the agent's tool registry, so the plant can request its own photo or sensor readings on demand.

// Where I Am Now
What's working

The ESP32 with camera module connects to a Python WebSocket server on my VPS and successfully transmits images. The hardware communication layer is proven out. Image capture is reliable.

What's next

Decide on the soil monitoring approach (sensors vs. image recognition on a probe reader). Build the plant agent connector inside Astrud. Give the plant a personality and let it loose on Telegram. Then wait for my girlfriend's reaction when her fern starts guilt-tripping her.

// Stack
Hardware
ESP32 + camera module
Transport
WebSocket (ESP32 → VPS)
Server
Python (VPS)
Agent
Hosted inside Astrud
Soil (TBD)
Capacitive sensor or probe + vision
Interface
Telegram