LmCast :: Stay tuned in

Show HN: An e-ink frame that hears birds and draws them as 1800s illustrations

Recorded: Sept. 15, 2026, 2:57 p.m.

Original Summarized

GitHub - arnegiacomo/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. · GitHub

Skip to content

Navigation MenuSign inAppearance settingsPlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub Copilot appDirect agents from issue to mergeMCP RegistryIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesCode QualityEnforce quality at mergeAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricingSearch/Sign inSign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

arnegiacomo

/

fugleramme

Public

Uh oh!

There was an error while loading. Please reload this page.


Notifications
You must be signed in to change notification settings

Fork
15

Star
467

Code

Issues
9

Pull requests
0

Discussions

Actions

Projects

Security and quality
0

Insights

Additional navigation options

Code

Issues

Pull requests

Discussions

Actions

Projects

Security and quality

Insights

mainBranchesTagsGo to fileCodeOpen more actions menuLatest commit History274 Commits274 CommitsFolders and filesNameNameLast commit messageLast commit date.agents.agents  .github.github  assetsassets  detectordetector  docsdocs  examplesexamples  hookshooks  src/fuglerammesrc/fugleramme  teststests  toolstools  .dockerignore.dockerignore  .git-blame-ignore-revs.git-blame-ignore-revs  .gitignore.gitignore  .python-version.python-version  AGENTS.mdAGENTS.md  CHANGELOG.mdCHANGELOG.md  CLAUDE.mdCLAUDE.md  CONTRIBUTING.mdCONTRIBUTING.md  DockerfileDockerfile  LICENSELICENSE  README.mdREADME.md  install.shinstall.sh  mkdocs.ymlmkdocs.yml  pyproject.tomlpyproject.toml  run.shrun.sh  uv.lockuv.lock  View all filesRepository files navigationREADMEContributingMIT licenseMore itemsfugleramme
E-ink bird frame for Raspberry Pi - real-time bird detection by audio, fully local AI, rendered as real, hand-cut 1800s bird illustrations.

Sorry about the dirty window - squirrels have been stealing the bird food.

NoteStill 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).
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.
TipThe 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.
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!
See Adding artwork for manual cutout steps.

No detections
A few visitors
A full garden

Inspiration and related projects
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:

AvianVisitors - BirdNET-Pi, AI-generated illustrations
inky-bird-frame - BirdNET, field-journal illustrations on an Inky panel
HABirdDashboard - BirdNET-Go, a collage card for Home Assistant

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 ❤️

Something is broken - a bug report
A question, an idea, or a frame you have built - the
FAQ first, then
Discussions
A fix, a doc change, or a bird you have cut - open a PR, no issue needed

See Contributing for more info.
License

Code: MIT - see LICENSE.
Detection (BirdNET-Go, installed
separately as a container): CC BY-NC-SA 4.0, non-commercial only. BirdNET model
by the Cornell Lab of Ornithology and Chemnitz University of Technology,
taxonomy data powered by eBird.org.
Bird images: each style folder carries its own terms and sources, and its
manifest links the plate every file was cut from. classic is
CC BY-SA 4.0 - see
assets/artwork/classic/ATTRIBUTION.md.
Label fonts (assets/fonts/): SIL OFL 1.1 - see
assets/fonts/ATTRIBUTION.md.
Bird sizes (assets/bird_sizes.csv): body mass from AVONET (Tobias et al.
2022, Ecology Letters, doi:10.1111/ele.13898),
CC BY 4.0.
BirdNET scientific-name aliases (assets/birdnet_aliases.json):
OpenFauna's compiled taxonomic alias
map, CC BY-SA 4.0 - see assets/ATTRIBUTION.md.

Prebuilt frames
I've built a few of these. If you'd like one rather than building it yourself,
please get in touch.
AboutE-ink bird frame for Raspberry Pi - real-time bird detection by audio, fully local AI, rendered as real, hand-cut 1800s bird illustrations.arnegiacomo.dev/fugleramme/Topicsbird-detectionbirdingbirdnetbirdnet-gobirdwatchingdockere-inkepaperhomelabinky-impressionkiosk-softwarepimoronipublic-domain-artpythonraspberry-piself-hostedResourcesReadmeMIT licenseContributingContributingActivityStars467 starsWatchers4 watchingForks15 forksReport repositoryReleasesSponsor this projectPackagesContributorsLanguages

Footer

© 2026 GitHub, Inc.

Footer navigation

Terms

Privacy

Security

Status

Community

Docs

Contact

Manage cookies

Do not share my personal information

You can’t perform that action at this time.

This project details the creation of an e-ink bird frame for a Raspberry Pi designed to provide real-time bird detection through audio input utilizing fully local artificial intelligence and incorporating hand-cut illustrations. The core functionality is driven by the BirdNET-Go system, which listens to a microphone, handles the classification of detected species, and interacts with an API to match each species to a corresponding visual representation. This process involves packing these custom illustrations onto a textured paper page, where the larger birds are centered, with an empty window indicating a perch, and the display is redrawn dynamically only when detected birds change on an Inky Impression e-ink panel. The system also functions as a web kiosk, allowing users to view the same real-time feed on a display via HDMI or any network device, supplemented by an administrative page for configuration and automatic updates.

The project emphasizes the artistic integration of public-domain natural-history illustrations, which serve as the visual component for the detected species. Over eight hundred such cut-outs, sourced from real plates and hand-curated for the project, cover more than four hundred species, drawing inspiration from Scandinavian, British Isles, and Central European art. Each detected species is matched to its corresponding illustration after background removal, and these elements are packed onto a page. The source material for the visual assets is carefully managed, with attribution guidelines specified for the original plates and fonts, and the taxonomic aliases used for detection are derived from OpenFauna's compiled map, linking the detection process to established ecological data.

The hardware foundation for this system comprises a Raspberry Pi 5, an Inky Impression 13.3 inch display, a microphone, and an A4 frame. The implementation provides flexible deployment options, ranging from local development environments using specific tools to containerized deployments via Docker, which accommodates the integration of the BirdNET-Go detector. One installation method involves a specific script that handles cloning the repository, installing dependencies, and setting up the system as a systemd service. Alternatives include running the application in a container or using a docker-compose setup to manage the services, ensuring persistence of data within the container environment.

The underlying AI and data sources are explicitly acknowledged. The detection component relies on BirdNET-Go, which itself uses models trained on taxonomy data powered by eBird.org, drawing on data from the Cornell Lab of Ornithology and Chemnitz University of Technology. The visualization system synthesizes this detection with curated biological art, linking real-time auditory input to a static, illustrative display. The development process encourages community contributions, soliciting fixes, documentation improvements, and additions to the artwork, reflecting a commitment to open-source development. The project incorporates specific licensing terms for its assets, including Creative Commons licenses for the illustrations and data, ensuring that the artistic and scientific components are appropriately managed.