A backyard feeder in Ontario, watched end to end by hardware and software I built and ran at home. A camera caught each visitor; a vision pipeline worked out what it was and logged the sighting, with the species and the model’s confidence drawn straight onto the photo.
The feeder has since been taken down and the parts used elsewhere. This page is what it left behind: every picture from its public log, exactly as the pipeline filed them — box, name and confidence all machine-drawn, nothing retouched.














How it worked
- Firmware — an ESP32-S3 camera running custom firmware that streamed video over the local network and survived the realities of an outdoor wifi link.
- Vision pipeline — a home GPU server pulled the stream and ran YOLOv8n on every frame to find the critter and box it, then named it with BioCLIP, an open biology vision model, constrained to a hand-curated list of species that actually turn up at an Ontario backyard feeder — chickadees, titmice, nuthatches, cardinals, jays, finches, woodpeckers, and the chipmunks and squirrels that crash the party. Below a confidence threshold the guess was held back rather than shown wrong. No cloud vision API, no third-party service.
- Web app — a Django app that recorded every visit and served the log these photos came from.
What it was worth
Four species made the public log in the end: cardinals by a mile, then blue jays, a chickadee and one grackle keeping its distance. The confidence numbers on the cardinals sit at 99.8% and up, which is the easy case — a red bird on a brown feeder is not a hard problem for a vision model. The grackle at 95.5%, small and half a yard back, is the more honest test of the thing.
The part worth keeping was never the bird list. It was that the whole chain — capture, detect, name, record, publish — ran on hardware in this house, with no account anywhere and no service that could withdraw it. The feeder came down. The pipeline is the piece that got reused.
Where it went next
This project has a sibling. The same chain now watches the driveway instead of a bird table — a sentinel that notices people, vehicles and animals coming up the drive and says so out loud over a speaker. It was not rebuilt from nothing. It was cloned from this one and retuned, deliberately: the decision on the day was reuse, don’t rebuild.
What carried over was less the code than the hard-won calibration. The feeder’s most useful lesson was its worst behaviour — it once named a dog, a pile of spilled seed and a hanging flower basket as a Blue Jay, each of them at 99% confidence. Fixing that is where the two rules came from that the driveway version needed on day one: only look at the part of the frame that matters, and throw out anything too small to be the thing it claims to be. The species model was dropped entirely, because a driveway has no use for knowing which bird it is.
Details to come — the sentinel gets its own page.