25 days at the fountain · 1362 clips · 20 species · 7 so far today

| American Crow | 91 | |
| House Sparrow | 37 | |
| House Finch | 28 | |
| Common Raven | 3 | |
| American Robin | 3 |



Generated 2026-06-10 08:22 PDT
About these identifications
Species: Made by a local AI model and may contain errors. Identifications are reviewed and corrected over time.
Behaviors: Some are reliable (bathing, drinking are clear from video). Others like preening or vocalizing are often guesses — the model fills in what a species typically does at a birdbath rather than what it actually observed.
Sex and age: Easy calls like adult male House Finch are reliable. Female vs juvenile distinctions and most other sex/age calls are rough approximations.
How Birdwatch works
Hardware: A small camera detects motion and records short clips. An AMD GPU handles inference locally via ROCm.
Infrastructure: Everything runs in Podman containers on a self-hosted Linux server. Ollama runs the qwen2.5vl:7b vision language model locally. No cloud inference.
Pipeline: camera clip lands in an ingress folder. A systemd path watcher detects it and triggers processing. The coordinator extracts 5 frames and sends them to Ollama for identification. Results are written to JSON, the clip moves to archive, and a reporter script reads all JSONs, applies corrections, and generates the HTML report. A scheduled timer pushes the report to GitHub Pages.
Corrections and accuracy over time: Clips are reviewed via a LAN-only correction UI. When a bird ID is corrected, it gets saved and triggers automatic description regeneration and report rebuild. Before analyzing any new clip, the model receives a list of every species previously verified at this fountain. This should reduce repeated mistakes on birds the model has already gotten wrong once — but it is a nudge, not a guarantee.