Avian Visitors

kaniksu1 pts0 comments

Avian Visitors - Teddy Warner

Skip to content

Initializing search

Birdnet [dot] local

Projects Feed

Avian Visitors

Teddy Warner

| May 2026<br>| 9–11 mins

I was initally planning on leaving this as a &lsquo;true&rsquo; personal project of sorts. I love a good project writeup of course, but frankly I thought this was too quick an afternoon project to warrant any more documentation than a tweet. Twitter thought otherwise …

i mounted a tiny microphone on my apartment balcony to listen for any birds passing by and built a site to collage them as they're heard pic.twitter.com/85KrLRL5tu<br>— Teddy (@WarnerTeddy) May 28, 2026

i mounted a tiny microphone on my apartment balcony to listen for any birds passing by and built a site to collage them as they're heard pic.twitter.com/85KrLRL5tu<br>— Teddy (@WarnerTeddy) May 28, 2026

… so I&rsquo;ve thrown together this short writeup for any of you who want to monitor any avian visitors that may be passing by your own place. It&rsquo;s short and sweet for now in an attempt to get something out quickly, but this work is part of a longer chain of bird-tangent projects i&rsquo;ll write something up about soon!

Apartment Birds&para;

Avian Visitors is a fork of BirdNET-Pi with a kachō-e collage overlay on top of it. BirdNET-Pi handles the audio capture and the species identification, running Cornell&rsquo;s BirdNET acoustic classifier against whatever a USB mic on the Pi picks up.

See it running at bird.onethreenine.net:

BOM&para;

Building a bird tracking station of your own is easy enough. The full project repo is at github.com/Twarner491/AvianVisitors. Here&rsquo;s all you need:

Qty<br>Description<br>Price<br>Link

Raspberry Pi (4B / 5 / Zero 2W)<br>~$35-80<br>Raspberry Pi

Micro SD Card (≥32 GB)<br>~$10<br>Amazon

USB lavalier microphone<br>$16.95<br>Amazon

Pi power supply<br>~$10

Total<br>~$80

Show all 5 itemsCollapse

While you&rsquo;re at it, grab a Gemini API key to restyle illustrations (free-tier is fine), an eBird API key to filter species by region.

Birdnet [dot] local&para;

Flash the SD card with Raspberry Pi Imager. Pick Raspberry Pi OS Lite (64-bit). In the customisation dialog set:

Username

WiFi SSID + password

Hostname: birdnet

Enable SSH with password auth

Plug the USB mic into the Pi and place it in a window or mount it outside. I stuck mine to the screen of a small window facing towards my balcony, keeping the Pi inside and away from the elements. Then boot! Once the Pi&rsquo;s up on your network, SSH in and run the installer:

ssh @birdnet.local<br>curl -s https://raw.githubusercontent.com/Twarner491/AvianVisitors/avian-visitors/newinstaller.sh | bash

This clones the fork, runs BirdNET-Pi&rsquo;s installer (audio capture, model, web UI, all the things), symlinks the AvianVisitors overlay into the Caddy web root, and reboots itself once everything&rsquo;s in place. The whole thing takes 20-40 minutes depending on your Pi model and Wi-Fi speed, and when the Pi comes back up, the collage lives at http://birdnet.local/ with the stock BirdNET-Pi UI still reachable at http://birdnet.local/index.php. The menu drawer in the top right opens an admin overlay with native settings, system, log, and tool panels that hit a small JSON facade on the Pi, so you can tune the analyzer, watch services, and tail logs without leaving the collage.

Forward off your LAN (Optional)<br>The default install keeps everything on your LAN, but avian/forwarding/ has three potential alternatives:

Cloudflare Tunnel

This gives you a public HTTPS URL with no port forwarding and no exposed home IP, which is what I&rsquo;m using for bird.onethreenine.net. Needs a free Cloudflare account and ~5 minutes to set up. Start by installing cloudflared on the Pi:

sudo apt install -y lsb-release<br>curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \<br>| sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null<br>echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" \<br>| sudo tee /etc/apt/sources.list.d/cloudflared.list<br>sudo apt update && sudo apt install -y cloudflared

Then authenticate and create the tunnel, pointing it at a hostname on a domain you own:

cloudflared tunnel login<br>cloudflared tunnel create birds<br>cloudflared tunnel route dns birds birds.your-domain.com

Drop the bundled config into place, point the tunnel: field at the UUID cloudflared tunnel create printed back, then install + start the service:

sudo cp ~/BirdNET-Pi/avian/forwarding/cloudflared.yml /etc/cloudflared/config.yml<br>sudo nano /etc/cloudflared/config.yml<br>sudo cloudflared service install<br>sudo systemctl restart cloudflared

To add a password gate on the public URL, set up Cloudflare Access (free tier covers up to 50 users) and add a policy on the hostname. If you&rsquo;d rather use HTTP Basic auth via Caddy itself, the caddy-auth.caddy snippet has a working example.

Home Assistant REST sensor

This surfaces the most-recent detection as sensor.latest_bird in Home...

cloudflared birdnet rsquo sudo avian cloudflare

Related Articles