Why We Built Sproutcast
The origin story: a plant that almost died, a weekend project, and an open-source commitment.
The plant that started this was a *Dahlia pinnata* â a tuberous dahlia grown from seed in March. By July it was 90 cm tall and had just set its first buds. By August it was dead.
I had overwatered it. Badly. The tuber rotted from the bottom up while the top of the plant looked almost fine until it didn't. I had been looking at it every day. I saw nothing.
That is the problem with visual plant monitoring: you are looking for change over days and weeks, but your brain normalises gradual change. You need a reference point. You need a number.
The first prototype
The first version was a Python script and a webcam. It ran a simple HSV threshold segmentation, measured the green pixel count, and wrote a number to a CSV file every hour. It was ugly. It worked. Over three weeks watching a second dahlia, the CSV showed a clear decline in green fraction four days before any visible yellowing.
That was enough to keep going.
Why open source?
Plant monitoring data is personal â it is your home, your garden, your practices. We did not want to build a product that survives only as long as a startup does. An open-source project can be forked, self-hosted, and contributed to regardless of whether anyone is being paid to maintain it.
The edge pipeline is pure C++20 with OpenCV â no Python, no cloud dependency, no black-box model. Every pipeline is a single .cpp file that you can read, understand, and modify.
What Sproutcast is not
It is not a magic plant doctor. The metrics are proxies, not ground truth. The chlorophyll index from a phone camera is not as accurate as a SPAD meter. The growth rate from a fixed webcam is not as accurate as a 3D scanner.
What it is: a consistent, longitudinal, zero-cost signal that gives you *something to compare against*. That is enough to catch most of the problems that kill plants â overwatering, light deficiency, nutrient depletion â before they become irreversible.
Where we are now
Sproutcast has grown from that CSV script into a full stack: C++ edge pipelines, a Go NATS bridge, SpacetimeDB for real-time sync, and a Next.js PWA. The dahlia that started this is planted again â and this time there is a Raspberry Pi watching it.