← Back to archive

Repo of the Day

tphakala/birdnet-go: Self-hosted realtime soundscape analyser for birds, bats and other wildlife. Multi-model local AI inference, runs 24/7 on a Raspberry Pi.

Published: Sep 5, 2026

Open repository ↗

Self-hosted realtime soundscape analyser for birds, bats and other wildlife. Multi-model local AI inference, runs 24/7 on a Raspberry Pi. - tphakala/birdnet-go

Summary

BirdNET-Go is a self-hosted Go application that continuously listens to microphone or network audio streams and uses local AI models to detect birds, bats, insects, amphibians, and mammals in real time. It ships as a single static binary (or multi-arch Docker image) with the BirdNET TFLite model embedded, so a Raspberry Pi 4 or similar 64-bit SBC can run it 24/7 without cloud inference. A Svelte 5 web UI exposes live spectrograms, detection heatmaps, dashboards, and alert routing.

What it is useful for

It is useful when an engineer or hobbyist needs an on-prem bioacoustics monitor: backyard ornithology, building a smart bird-feeder stream, surveying bats with an ultrasonic microphone (up to 256 kHz sample rates are documented), or wiring species detections into home automation. Multi-model inference is the practical highlight. Modeled runs install BirdNET v2.4 (6,500+ birds), Google Perch v2 via ONNX (14,795 species), eleven regional BattyBirdNET models, and BirdNET Geomodel v3.0 directly from an in-app model gallery, then run them against separate streams so cross-model agreement can boost confidence on shared detections. Alerts route through shoutrrr (Discord, Slack, Telegram, ntfy, Pushover, Gotify, Matrix), plus MQTT with Home Assistant auto-discovery, BirdWeather, webhooks, shell hooks, and browser push. A Prometheus endpoint and system-health page make it viable to operate unattended, with OIDC/SSO and TLS management for exposing it safely. Data lineage is stored in SQLite or MySQL with embedded eBird/Clements taxonomy (11,145 species) and offline audio clip export.

How engineers can use it

On Debian, Ubuntu, or Raspberry Pi OS the documented quick install is:

curl -fsSL https://github.com/tphakala/birdnet-go/raw/main/install.sh -o install.sh
bash ./install.sh

Docker and Portainer users are directed to the Docker/docker-compose.host.yml host-network stack in the wiki installation guide, since images are published for linux/amd64 and linux/arm64. Pre-built binaries for Linux, Windows, and macOS are attached to each GitHub release.

For development, the README documents a Task workflow:

git clone https://github.com/tphakala/birdnet-go.git
cd birdnet-go
task setup-dev   # installs Go 1.25, Node LTS, linters, Playwright
task             # build
task dev_server  # hot-reload dev server

Note that the GitHub repository field shows NOASSERTION, but the README specifies CC BY-NC-SA 4.0 (non-commercial). The README also flags that the Unraid template is untested on real Unraid, and the BirdNET-Pi2Go database converter is deprecated and not compatible with the current schema (a native install is planned). For deeper guidance, the README links to separate wiki pages for installation, hardware recommendations, ONNX Runtime installation, security, and RTSP troubleshooting.