birdie-pi — Modular BirdNET Detection System
Repository: https://github.com/netnutmike/birdie-pi
Language: Python (services) + React/TypeScript (frontend)
License: MIT
Status: Active Development
Created: February 22, 2026
Last Updated: March 24, 2026
What It Does
A distributed, microservices-based bird detection platform built on BirdNET AI. Deploy multiple audio listeners (Raspberry Pis or standard hardware) across different locations, centralize species identification processing via the BirdNET ML model, and explore detections through a modern web dashboard.
Key capability: Identify 6,000+ bird species in real-time using AI, with notifications, web dashboard, and citizen science integration.
Architecture Overview
Edge Devices (Listeners)
↓ Audio Segments (Redis/MQTT)
Message Queue (Redis or MQTT)
↓ Consume
Decoder Service (BirdNET processing)
↓ Detections
API Backend (FastAPI, Python)
↔ Database (PostgreSQL or SQLite)
↓ HTTP/WebSocket
Web Frontend (React/TypeScript)
Components:
- Listener Service — Audio capture on edge devices (sample rate, device config, segment duration)
- Decoder Service — BirdNET ML model processing (confidence threshold, species filtering)
- API Backend — FastAPI REST API, database, integrations (email, Discord, Slack, Pushover via Apprise)
- Web Frontend — React dashboard with detections, spectrograms, analytics, live streams
- Message Queue — Redis or MQTT for async communication
- Database — PostgreSQL (production) or SQLite (dev)
Features
✅ Distributed Audio Capture — Multiple listeners on Raspberry Pis or other hardware
✅ Real-time Bird Detection — 6,000+ species via BirdNET AI
✅ Notifications — Email, Discord, Slack, Pushover (Apprise integration)
✅ Web Dashboard — Browse detections, spectrograms, analytics, live audio streams
✅ BirdWeather Integration — Contribute to citizen science platform
✅ Species Images — eBird / Macaulay Library photos
✅ Multi-Deployment — Docker Compose (single-host) or Kubernetes (distributed)
✅ Multi-Architecture — Docker images for arm64 (Raspberry Pi) and amd64
Quick Start
Prerequisites
- Docker + Docker Compose
- For development: Python 3.11+, Poetry, Node.js 18+
1. Clone and configure
git clone https://github.com/netnutmike/birdie-pi.git
cd birdie-pi
cp config/.env.example .env
# Edit .env with your settings
2. Start services
docker-compose up -d
3. Access dashboard
Open http://localhost:3000 in browser.
Tech Stack
- Backend: Python 3.11+, FastAPI, Poetry
- Frontend: React, TypeScript, Node.js 18+
- Infrastructure: Docker, Docker Compose, Kubernetes
- Message Queue: Redis or MQTT
- Database: PostgreSQL (prod) or SQLite (dev)
- ML Model: BirdNET (Cornell Lab of Ornithology)
Documentation
- User Guide — Installation, config, daily usage
- Developer Guide — Architecture, local dev, testing
- API Documentation — REST endpoints, WebSocket, auth (also at
/docswhen running) - Deployment Guide — Docker Compose, Kubernetes, Raspberry Pi
- SETUP.md — Quick reference for project setup
Status & Notes
Current State (as of March 24, 2026):
- Core microservices implemented and tested
- Docker Compose setup functional (both production and development)
- Installation script working for Raspberry Pi deployments
- Kubernetes manifests ready for distributed deployments
- Documentation complete (user guide, developer guide, API docs, deployment guide)
Outstanding:
- Field deployment validation (real bird detection testing across multiple Pis)
- Performance tuning for sustained 24/7 operation
- Raspberry Pi resource optimization (CPU, memory, storage)
- BirdWeather integration testing in production
- Community contributions and feedback loop
Known Considerations:
- BirdNET model performance varies by region and season
- Microphone quality critical for accurate detection
- Network bandwidth depends on audio segment frequency and quality
- Database growth with long-running deployments (retention policies needed)
Deployment Scenarios
Single-Host Docker Compose
Ideal for testing and small deployments:
docker-compose up -d
Distributed Kubernetes
For scaled multi-location deployments:
kubectl apply -f deploy/k8s/
Raspberry Pi Cluster
Multiple Pis running listeners + central processing server:
bash scripts/install.sh # On each Pi
Key Integrations
- BirdWeather — Citizen science platform (contribute detections)
- Apprise — Multi-platform notifications (email, Discord, Slack, Pushover, SMS, etc.)
- eBird / Macaulay Library — Bird species photos and information
- BirdNET — AI model by Cornell Lab of Ornithology
Next Steps for Development
- Deploy to test environment with 2-3 Raspberry Pis
- Validate bird detection accuracy and notification delivery
- Monitor system performance under 24/7 operation
- Gather user feedback and refine UX
- Document deployment best practices and lessons learned
Project file created April 2, 2026. For the latest code, see GitHub: https://github.com/netnutmike/birdie-pi
