⏱️ Lectura: 9 min
A Raspberry Pi 5 listens to birdsong in a garden in Bergen, Norway, and within seconds draws the actual bird on a natural history plate from 200 years ago. That’s fugleramme, an open source project that already has 1,500 stars on GitHub.
📑 En este artículo
The frame runs entirely locally: no cloud, no subscription, no AI-generated art. Each identified species is paired with one of more than 800 hand-cut illustrations from real 19th-century plates, and the result is redrawn on an e-ink panel or a web kiosk.
TL;DR
- Fugleramme runs on a Raspberry Pi 5 and displays audio-detected birds on a 13.3-inch Inky Impression e-ink panel.
- It uses BirdNET-Go to classify birdsong: the AI runs 100% locally, with no cloud or external servers.
- The art catalog has more than 800 cutouts covering over 400 bird species.
- All illustrations come from real 19th-century plates; none were generated by AI.
- The GitHub repository has 1,500 stars and 35 forks across 279 commits.
- It works without the e-ink panel: there’s a web kiosk mode on port 8080 for any screen.
- The live demo runs from a window in Bergen, Norway, at fugleramme.arnegiacomo.dev.
- The project is in early development: species coverage is strong in Europe and weak in the rest of the world.
Fugleramme: what happened
Fugleramme (Norwegian for “bird frame”) is a personal project that went viral on GitHub as soon as it was published: the repository has racked up 1,500 stars, 35 forks, and 279 commits. The idea is simple to explain and hard to execute well: listen to the birds singing in a garden, identify them with local AI, and display that actual bird, not an icon or a generic photo, but a hand-cut natural history illustration.
The creator has his own installation running live from his kitchen window in Bergen, visible at fugleramme.arnegiacomo.dev, showing in real time which birds are singing in his garden at that moment. The README itself admits it plainly: the project is in early development and some occasional bugs and rough edges should be expected.
📌 Note: fugleramme doesn’t replace the audio classifier. It needs a BirdNET-Go instance running, either on the same Raspberry Pi or on another machine on the network, to receive the detections.
Background and history
The spark for the project was a physical poster: a plate from WWF Verdens naturfond illustrated by Axel Thorenfeldt that the author had hanging on his wall. The idea of turning it into something alive, showing the actual birds in the garden instead of a fixed selection, came from AvianVisitors, a project the author saw on Instagram. Species detection by audio runs on BirdNET-Go, the classification engine already used by several projects in the DIY birdwatching community.
Fugleramme isn’t the only attempt to connect BirdNET to a physical display. The project’s README explicitly lists four sibling projects, though it clarifies that it shares no code or art with any of them.
Technical details and performance
The data flow is linear and minimal. A microphone connected to the Raspberry Pi feeds BirdNET-Go, which handles audio classification. Fugleramme periodically queries the BirdNET-Go API, matches each detected species against its illustration catalog, builds a composition with the largest birds toward the center (ordered by body mass), and only redraws the panel when the composition changes.
flowchart TD
A["USB Microphone"] --> B["BirdNET-Go"]
B --> C["BirdNET-Go REST API"]
C --> D["fugleramme"]
D --> E["Illustration catalog"]
E --> F["Inky Impression e-ink panel"]
E --> G["Web kiosk :8080"]
The reference hardware is a Raspberry Pi 5, a 13.3-inch Inky Impression panel (Spectra 6), a microphone, and a physical A4 frame where everything gets mounted. The e-ink panel is the recommended experience, but it’s not required: without it, fugleramme runs in web-only mode, showing the same kiosk over HDMI or from any device on the local network.
This separation between detection (BirdNET-Go) and presentation (fugleramme) is the most important design decision: if a BirdNET-Go station is already running on another machine, it’s enough to point fugleramme at that API instead of installing a second microphone.
The art: more than 800 cutouts from real plates
Half the project, according to the author himself, is about displaying public-domain natural history illustrations. The catalog has more than 800 cutouts covering over 400 species, all taken from real plates and hand-curated for the project. The README is explicit: no illustration was generated by an image model, though some cutouts did go through AI-assisted retouching to clean up edges.
Each detected species is cut out without a background and placed on a page with paper texture, with the largest birds toward the center according to their body mass. A garden with no detections shows an empty perch; an active garden fills up with real silhouettes, not generic ones.
⚠️ Heads up: species coverage depends on where the plates came from. Since they’re Scandinavian, British, and Central European, Norway, Sweden, Denmark, the UK, and Germany are well covered. The rest of the world isn’t, yet.
How to try it
For local development, the project uses uv as its Python environment manager and exposes a fake detector so you don’t need a real BirdNET-Go station while testing the interface.
Linux and macOS
uv sync
uv run fugleramme-fake-detector &
uv run fugleramme-dev
Windows (PowerShell)
uv sync
Start-Process uv -ArgumentList "run fugleramme-fake-detector"
uv run fugleramme-dev
The first command spins up a simulated BirdNET-Go on port 8090; the second starts fugleramme on port 8080 with hot reload. Opening http://localhost:8080 should show the kiosk responding to fake detections generated by the simulator.
To install directly on a Raspberry Pi with the hardware already set up:
# Raspberry Pi OS (Linux)
curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/install.sh | bash
The script asks where BirdNET-Go lives and which ports to use, clones the repository, installs the dependencies, and leaves fugleramme running as a systemd service. The project itself warns that, on a freshly installed system, a reboot is probably needed once.
The cross-platform alternative is Docker, the same on Windows, macOS, and Linux with Docker Desktop or Docker Engine installed:
docker run -d -p 8080:8080 -v fugleramme:/data \
-e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 \
ghcr.io/arnegiacomo/fugleramme
In PowerShell, the same command swaps the line-continuation backslash for a backtick:
docker run -d -p 8080:8080 -v fugleramme:/data `
-e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 `
ghcr.io/arnegiacomo/fugleramme
If there’s no BirdNET-Go instance running yet, the repository itself publishes a docker-compose.yml that spins up both services together on a Linux machine with a USB microphone:
curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/examples/docker-compose.yml -o docker-compose.yml
docker compose up -d
To confirm it’s up and running, visit http://localhost:8080/admin: that’s where you configure what to display and check the connection status with BirdNET-Go. Everything that persists (downloaded catalog, configuration, image cache) lives in the /data volume, so running docker volume inspect fugleramme shows where it’s stored.
Impact and analysis
Fugleramme enters an already crowded niche of projects that connect BirdNET to some kind of visualization, but each one solves the art side differently:
| Project | Detection engine | Art type | Platform |
|---|---|---|---|
| fugleramme | BirdNET-Go (external) | Real cutouts from 19th-century plates | Inky e-ink + web kiosk |
| AvianVisitors | BirdNET-Pi | AI-generated illustrations | Physical frame |
| inky-bird-frame | BirdNET | Field-journal style illustrations | Inky panel |
| HABirdDashboard | BirdNET-Go | Card-style collage | Home Assistant |
| belkins-birdnet | BirdNET-Pi | AI-generated kachō-e style illustrations | Not specified |
The difference that matters most among these projects isn’t technical, it’s editorial. Fugleramme explicitly bets on hand-curated public-domain art instead of AI generation, something its own README underscores as a project principle. It’s an unusual stance in today’s maker ecosystem, where generating the illustration with a diffusion model is usually the path of least effort.
The 1,500 stars and 35 forks in just 279 commits show the project gained real traction in the DIY electronics community, though the README itself asks for patience: it’s still early-stage software.
What’s next
The maintainer himself says the art coverage will expand toward more regions of Europe and North America. The project also documents the process for adding new illustrations by hand, so the expansion partly depends on the community donating cutouts from plates of other parts of the world.
Since the project is marked as early development, expect API changes between versions and the occasional edge-case bug: it’s not yet install-and-forget software.
📖 Summary on Telegram: View summary
Try it yourself: clone the repository and run uv sync && uv run fugleramme-dev to see the kiosk working in your browser in under a minute, no hardware required.
Frequently Asked Questions
Do I need the e-ink panel to use fugleramme?
No. Without the panel, fugleramme runs in web kiosk mode: you can view it over HDMI on any screen or open it from any device on the local network.
What hardware does the project recommend?
A Raspberry Pi 5, a 13.3-inch Inky Impression panel (Spectra 6), a microphone, and a physical A4-sized frame to mount everything.
How does it identify bird species?
Fugleramme doesn’t do it directly: it queries the BirdNET-Go API, the engine that listens to the microphone and runs the audio classification with local AI.
Was the art generated by artificial intelligence?
No. They’re cutouts of real natural history illustrations, mostly from the 19th century, hand-curated. According to the README, some cutouts were retouched with AI to clean up the background, but no illustration is generated.
Does it work well outside Europe?
Not entirely yet. The plates are Scandinavian, British, and Central European in origin, so species coverage is strong in those regions and weak elsewhere, though the project says it’s working on expanding it.
Is it free and open source?
Yes. The code is published on GitHub under the arnegiacomo account, with installation instructions for both Raspberry Pi and Docker.
References
- Official fugleramme repository on GitHub: source code, documentation, and installation instructions.
- Fugleramme live demo: the author’s actual installation in Bergen, Norway.
- BirdNET-Go on GitHub: the audio classification engine fugleramme uses to identify species.
- Electronic paper (Wikipedia): technical background on how e-ink panels like the Inky Impression work.
📱 Like this content? Follow @programacion on Telegram for daily tech content in Spanish: quick summaries, fresh content every day.
0 Comments