fugleramme README

The project's README from github.com/arnegiacomo/fugleramme. As one markdown file: README.md.

fugleramme

E-ink bird frame for Raspberry Pi - real-time bird detection by audio, fully local AI, rendered as real, hand-cut 1800s bird illustrations.

The frame on a kitchen windowsill showing six birds heard in the garden, a window feeder on the glass behind it
Sorry about the dirty window - squirrels have been stealing the bird food.

Live demo Latest release CI Last commit
Stars Contributors License: MIT, artwork CC BY-SA 4.0
Artwork Species

[!IMPORTANT] Fugleramme has been selected for the GOSIM Spotlight at GOSIM Shenzhen 2026. If you're there, come by and say hi!

[!NOTE] Still in early development: expect the odd bug and a few unpolished edges, with plenty more features to come.

Live on fugleramme.arnegiacomo.dev running from my kitchen window and displaying the actual birds currently heard in my garden (Bergen, Norway). See other frames from around the world here!

Hardware, install and operations docs: arnegiacomo.dev/fugleramme

How it works

BirdNET-Go listens on a mic and handles the classifier. Fugleramme polls its api, matches each species to an illustration, then packs them onto a page, and redraws only when the birds change - on an Inky Impression e-ink panel, and as a web kiosk serving the same view. There's an admin page that lets you configure what to show, and automatic updates and such.

If you already run BirdNET-Go, point the frame at it instead - on the same machine or anywhere else reachable from your network.

[!TIP] The e-ink panel is not required, although it's recommended for the intended experience. Without one, Fugleramme runs web-only - show the kiosk on a display over HDMI, or open it from any device on the network.

Hardware

A Raspberry Pi 5, an Inky Impression 13.3" (Spectra 6), a mic and an A4 frame. Full parts list, recommendations and alternatives: Hardware.

I'm affiliated with Pimoroni - buying through the Pimoroni links or using the code ARNE at checkout supports this project.

Art

Half the point of this project is showing off some amazing public-domain natural-history illustrations. Over 800 cut-outs covering more than 400 species, every one taken from a real plate and hand-curated for this project (no art is AI-generated, though some has been retouched with AI).

Each detected species is matched to its illustration, background-removed, and packed onto a textured paper page with the larger birds toward the centre, sized by body mass. An empty window shows a bare perch.

The plates are Scandinavian, British and central European, so the Nordics, the British Isles and Germany are best covered. Elsewhere not so much (yet). Broader European and North American coverage is in the works!

Species coverage has a searchable list of all currently supported species. See Adding artwork for manual cutout steps.

No detections A few visitors A full garden
No birds detected A few garden birds Many garden birds

The look came from a WWF Verdens naturfond poster by Axel Thorenfeldt hanging on my wall, the live-frame idea from AvianVisitors that I saw on Instagram, and the detection from BirdNET-Go - I wanted a version of that poster showing the actual birds in my garden.

Similar projects:

Fugleramme shares no code or art with them.

Run locally (for development)

uv sync                                       # set up venv
uv run fugleramme-fake-detector               # stand-in BirdNET-Go on :8090
uv run fugleramme-dev                         # start service on :8080 with hot-reload

The fake detector's flags, and working against a real station instead: Running it without a Pi.

Install on a Raspberry Pi

From the pi (assuming you have the hardware up and running):

curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/install.sh | bash

Asks where BirdNET-Go should live and which ports to use, clones the repo, installs the required deps, and starts the frame as a systemd service. NB! Will probably require a reboot on a fresh system.

From a blank SD card, see the full install guide.

Run in a container

docker run -d -p 8080:8080 -v fugleramme:/data \
  -e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 \
  ghcr.io/arnegiacomo/fugleramme

Or build the image from a checkout:

docker build -t fugleramme .
docker run --rm -p 8080:8080 -v fugleramme:/data \
  -e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 fugleramme

Kiosk on :8080, admin on :8080/admin, everything it persists in /data.

On a Linux box with a USB mic, this brings up BirdNET-Go alongside it:

curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/examples/docker-compose.yml -o docker-compose.yml
docker compose up -d

See Container for more info.

Contributing

Contributions are very welcome and encouraged - fixes, docs and artwork most of all. Thanks to everyone who has contributed so far ❤️

See Contributing for more info.

License

Contact

Questions and ideas about the project belong in Discussions. For anything else, you can reach me through arnegiacomo.dev. I've built a few of these frames, but I currently don't have the capacity to build them for others.

fugleramme (arnegiacomo/fugleramme)

Searching Database…

What is this?An e-ink bird picture frame for the Raspberry Pi: it detects birds by their sounds in real time with fully local AI and shows hand-cut 1800s illustrations of what is singing around it. A web kiosk serves the same view on any screen.
So it repaints itself as birds come and go - how does that actually work?BirdNET-Go listens on a microphone and classifies the birds. Fugleramme polls its API, matches each detected species to an illustration, packs them onto a page and redraws only when the birds change.
How do I install it on the Pi?Run the install script on the Pi: it asks where BirdNET-Go should live and which ports to use, clones the repo, installs the dependencies and starts the frame as a systemd service - expect a reboot on a fresh system. It also runs as a Docker container.
What hardware do I need to build one?A Raspberry Pi 5, an Inky Impression 13.3-inch e-ink panel (Spectra 6), a microphone and an A4 frame. The docs site has a full parts list with recommendations and alternatives.
Will it actually work for the birds in my region?Coverage is best for the Nordics, the British Isles and Germany, since the plates are Scandinavian, British and central European. Broader European and North American art is in the works, and there is a searchable list of currently supported species.
Do I have to buy that specific e-ink panel?No. The panel is recommended for the intended experience, but without one fugleramme runs web-only - show the kiosk on a display over HDMI or open it from any device on the network.
A mic listening to my garden round the clock - does any audio leave my network?No. Detection is fully local AI - BirdNET-Go processes the microphone feed on your own hardware and fugleramme just polls its API.
Anything tricky about the licensing?The code is MIT, but detection is done by BirdNET-Go, licensed CC BY-NC-SA 4.0 - non-commercial only. Each art folder carries its own terms, and the classic style is CC BY-SA 4.0.
What exactly is BirdNET-Go in all this?The open-source app that does the actual birdsong detection, installed separately (typically as a container) alongside fugleramme. Its BirdNET model comes from the Cornell Lab of Ornithology and Chemnitz University of Technology.
Where do the bird illustrations come from?Over 800 cut-outs covering more than 400 species, each cut from a real 1800s natural-history plate and hand-curated - no AI-generated art, though some was retouched with AI.
I already run BirdNET-Go - do I have to install it again?No, just point the frame at your existing instance, whether it runs on the same machine or anywhere else reachable from your network.
Can I see one running before buying the hardware?Yes - the author's own frame is live at fugleramme.arnegiacomo.dev, showing the birds currently heard outside his kitchen window in Bergen, and the README links to frames built around the world.
Size
1.5 GB
Stars
3.8K
Age
3mo
Commits · 90 Days