A bird classification system that integrates with Frigate NVR to automatically identify birds visiting your feeder using advanced AI models.
A personal project built with AI-assisted coding, inspired by the original WhosAtMyFeeder. When I noticed the original project wasn't being maintained, I saw an opportunity to learn and build something better.
Built with help from AI coding assistants as an experiment in what's possible with modern development tools. Feedback and contributions are welcome!
A public instance of YA-WAMF is available here:
When Frigate detects a bird at your feeder, YA-WAMF:
Advanced Features:
Note: To preview the iNaturalist submission UI without OAuth, enable Debug UI (
DEBUG_UI_ENABLED=true) and toggle Settings ā Debug ā iNaturalist preview UI.
For detailed guides on setup, integrations, and troubleshooting, please see the Full Documentation Suite.
Here's the flow from bird to identification:
āāāāāāāāāāāāāāā MQTT Event āāāāāāāāāāāāāāā
ā Frigate ā āāāāāāāāāāāāāāāāā> ā YA-WAMF ā
ā (NVR) ā "bird detected" ā Backend ā
āāāāāāāāāāāāāāā āāāāāāāā¬āāāāāāā
ā
v
āāāāāāāāāāāāāāāā
ā Fast Path: ā
ā Use Frigate ā
ā Sublabels? ā
āāāāāāāā¬āāāāāāāā
ā
(No) v (Yes)
āāāāāāāāāāāāāāāā
ā AI Engine ā
ā (TFLite/ONNX)ā
āāāāāāāā¬āāāāāāāā
ā
v
āāāāāāāāāāāāāāāā
ā Save to DB & ā
ā Notify User ā
āāāāāāāā¬āāāāāāāā
ā
v
āāāāāāāāāāāāāāāā
ā Auto Video ā
ā Analysis ā
ā (Background) ā
āāāāāāāāāāāāāāāā
Step by step:
frigate/events on your MQTT broker1. Download configuration files:
mkdir ya-wamf && cd ya-wamf
curl -O https://raw.githubusercontent.com/Jellman86/YetAnother-WhosAtMyFeeder/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/Jellman86/YetAnother-WhosAtMyFeeder/main/.env.example
cp .env.example .env
2. Configure your environment:
Edit .env with your settings:
# Docker network (check with: docker network ls)
DOCKER_NETWORK=frigate
# Frigate instance
FRIGATE_URL=http://frigate:5000
# MQTT broker (usually 'mosquitto' if running in Docker)
MQTT_SERVER=mosquitto
MQTT_PORT=1883
# MQTT authentication (if required)
MQTT_AUTH=true
MQTT_USERNAME=mqtt_user
MQTT_PASSWORD=secret_password
# Timezone
TZ=Europe/London
3. Verify Docker network:
Ensure the network specified in .env exists and matches your Frigate setup:
docker network ls
4. Create directories and start:
mkdir -p config data/models
docker compose up -d
5. Access the dashboard:
Open http://localhost:9852 (or http://YOUR_SERVER_IP:9852)
6. Download the AI model:
In the web UI, go to Settings and click the model download button. The model is saved to data/models/ and persists across updates.
Guest mode is read-only and rate-limited. Guests can view detections and any existing AI Naturalist analysis, but cannot change settings, delete items, or run new AI analysis. You can hide camera names and limit the public history window in Settings > Public Access.
Check logs to confirm everything is working:
docker compose ps # Check container status
docker compose logs backend -f # Follow backend logs
# You should see:
# MQTT config: auth=True port=1883 server=mosquitto
# Connected to MQTT topic=frigate/events
| Issue | Solution |
|---|---|
| MQTT connection failed | Verify DOCKER_NETWORK matches Frigate's networkCheck MQTT hostname and credentials |
| Frontend not loading | Run docker compose ps to check healthView logs: docker compose logs frontend |
| No detections | Confirm Frigate is detecting birds Check backend logs for events Verify model was downloaded in Settings |
For detailed troubleshooting, see the Troubleshooting Guide.
All settings are managed through the web UI under Settings. Configuration is persisted to config/config.json.
| Setting | Description | Default |
|---|---|---|
| Frigate URL | Frigate instance for fetching media | http://frigate:5000 |
| MQTT Server | MQTT broker hostname | mqtt |
| Classification Threshold | Minimum confidence for detections (0-1) | 0.7 |
| Min Confidence Floor | Reject detections below this score | 0.4 |
| Trust Frigate Sublabels | Use Frigate's labels instead of local AI | Enabled |
| Auto Video Analysis | Analyze full video clips for accuracy | Disabled |
| AI Model | MobileNet (Fast), ConvNeXt (High), EVA-02 (Elite) | MobileNet |
| BirdWeather Token | Upload detections to BirdWeather | (none) |
| BirdNET-Go Topic | MQTT topic for audio detections | birdnet/text |
YA-WAMF v2.6.0 introduces a robust built-in authentication system.
š Read the Full Authentication & Access Control Guide
If you are upgrading from an older version using YA_WAMF_API_KEY, your setup will continue to work. However, this method is deprecated and will be removed in v2.9.0. I recommend migrating to the new password-based system via Settings > Security.
For detailed upgrade instructions, see the Migration Guide.
YA-WAMF includes a robust video proxy that streams clips directly from Frigate. This supports:
YA-WAMF includes a custom component for Home Assistant to bring your bird sightings into your smart home.
Features:
Setup:
custom_components/yawamf folder to your Home Assistant custom_components directory.http://192.168.1.50:9852).This project is actively developed and your feedback is valuable!
How to contribute:
Feel free to open PRs if you have improvements to share. Just keep in mind this is a hobby project maintained in spare time.
This project is licensed under the MIT License - see the LICENSE file for details.