PlantLab can now analyze more than one plant in a single uploaded photo. Instead of forcing the whole image into one diagnosis, the API finds the separable plants, diagnoses each one on its own, and returns a results[] array with one entry per plant.
This is a breaking API change. The response schema is now 3.0.0. Fields like is_healthy, growth_stage, conditions, pests, and reliability_score moved out of the top level and into results[]. Image-level fields such as is_cannabis and cannabis_confidence stay top-level.
If your code already treats a diagnosis as “the answer for this plant,” the migration is simple: iterate results[]. Single-plant photos still return exactly one result.
A camera watches your plants on a schedule. Each photo goes to an AI trained only on cannabis, and Home Assistant turns the answer into sensors you can automate against. Something looks off, your phone buzzes with the diagnosis and the photo. Everything's fine, it stays quiet.
Setup runs about 20 minutes. The cost is a camera you probably already own plus PlantLab's free tier – three diagnoses a day, no card. No soldering, no standalone Python scripts. A Home Assistant integration and some YAML.
AI plant health diagnosis is having a moment – grow cameras with “AI” on the box, phone apps that name a deficiency from one photo, controllers that promise to read your plants for you. Most of them report a confidence number they haven't earned, because the hard part of AI plant diagnosis isn't producing an answer. It's knowing when the answer is wrong, and proving the accuracy you claim on photos the model has never seen. June at PlantLab was a research-and-hardening month spent almost entirely on that second problem: catching my own model being wrong before a grower could. This is what that looks like from the inside, with the numbers.
Most plant diagnosis tools show you a confidence number. Confidence tells you how strongly the model picked an answer – not whether you should act on it. Those are different questions, and on a hard photo they get different answers: a model can be very confident and flat wrong. If you're feeding a diagnosis into an automation – a Home Assistant flow, a grow-room controller, a dashboard alert – the signal you actually want is reliability: how trustworthy is this answer, on this specific image? PlantLab returns both. Here's how to use each, and why automation should gate on reliability, not confidence.
Building on American cloud is the easy choice, which is exactly why almost everyone makes it. One account at Amazon, Google, or Microsoft and you get the whole stack in one place: compute, database, storage, DNS, email, all of it wired together, billed on one invoice, documented to death. It is a genuinely excellent product. It is also where PlantLab started.
It doesn't run there anymore. The diagnosis API, the database that holds your history, and the services around them now run on European infrastructure, and the live path a request travels – upload, inference, response, storage – never leaves the EU. That was not the easy choice. I want to explain why I think the easy choice and the right one were two different things here.
I spent two days in May chairing and speaking at World Class Cannabis Business Europe (WCCBE) in Frankfurt, on the subject of visual AI for cannabis cultivation. The biggest takeaway wasn't about the technology. It was about the gap between what the AI industry likes to talk about – autonomy, end-to-end automation, “AI runs the grow” – and what growers in the room actually asked for, which was something much more grounded. They want a tool that helps them decide, not one that decides for them. They want it to be specifically good at plants, not generically good at everything. Here's what I heard, and what it means for where PlantLab goes next.
When you send a plant photo to a diagnosis API, you are not just sending a picture of a leaf. You are sending a signal about what you grow, roughly where, and sometimes at what scale. PlantLab treats that as sensitive data. Diagnosis history is kept only if you opt in, only for a bounded window, and the sensitive parts are encrypted at rest. Analytics are cookieless, the supporting infrastructure is moving toward EU providers, and your API key is shown once and never emailed back to you in full. None of this is glamorous. All of it is the difference between an API you can hand real grow-room data and one you can't.
PlantLab's API now returns a reliability_score field on every diagnosis. A number from 0 to 1 telling you how likely the answer is to be correct on this specific image. It replaces the old diagnostic_confidence and safety_classification fields, which were rule-based guesses that I never trusted. The new score is much better at flagging the diagnoses that turn out to be wrong – especially on the hard cases, which is where you actually need it. Schema bumped from 1.x to 2.0.0. If you're integrating with PlantLab today, the migration is a one-line change.
Most plant diagnosis tools give you a paragraph to read. PlantLab gives your automation system something to act on.
The model covers 31 cannabis conditions and pests at 99.1% balanced accuracy. Balanced means every class counts equally – a system that nails common deficiencies but misses rare pests does not score well. The output is structured JSON that Home Assistant, Node-RED, or a custom controller can read and act on without a person in the loop.