selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

fugleramme logo

Self-host fugleramme

v0.29.0

Bird detection frame with hand-cut 1800s illustrations

ReleaseOpen SourceMIT
Updated15 hours ago
LanguagePython
Setup difficultyModerate
MobileResponsive
Stars
3 951
CPU
Raspberry Pi 5 (2 GB RAM) for full build; any 40-pin Pi (Pi 4, Pi Zero 2 W) for frame-only
RAM
2 GB for full build (BirdNET-Go + frame); 1 GB for frame-only
Storage
32 GB microSD for full build; 16 GB for frame-only
Port
8080 (web interface (kiosk and admin))
Requires
BirdNET-Go
Docker
ghcr.io/arnegiacomo/fugleramme
Install with Docker Compose
Fugleramme frame on a windowsill showing a collage of birds heard in the gardenFull e-ink panel redraw showing the color flashing sequenceCollage mode showing multiple detected birds on the e-ink panelSingle bird mode showing a Eurasian Tree Sparrow with name and time heardCollage display mode with multiple birds packed togetherLatest bird mode showing the most recently heard speciesNewest arrival mode showing the most recent new species detected

What is fugleramme?

Fugleramme is a self-hosted bird detection frame that listens to audio via a microphone, uses BirdNET-Go running locally to identify bird species in real-time, and renders the detected birds as a collage of hand-cut public-domain natural history illustrations from the 1800s. It can run on a Raspberry Pi with an Inky Impression e-ink panel, or as a container on any Linux machine, NAS, or homelab server. The frame delivers the collage over HTTP so it can display on e-ink panels, HDMI screens, TVs, Samsung Frame TVs, or as a desktop wallpaper. It includes an admin interface for configuration, supports 40+ languages for species names, and the artwork covers 650+ species with nearly 1200 hand-curated illustrations.

Should you self-host fugleramme?

fugleramme scores 63/100 on selfhost.directory (how scoring works) and ranks #19 of 104 in Home Automation. It has 3 951 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.29.0, came out on 22 October 2026. New versions land roughly every 2 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Home Assistant (91/100, 91 795 stars). It scores higher overall, so compare the two before you pick. See fugleramme vs Home Assistant side by side.

Features

  • Admin configuration page
  • Admin page authentication
  • Custom artwork support
  • E-ink panel support (Inky Impression)
  • External e-ink panel support
  • Hand-cut 1800s bird illustrations
  • Multi-language species names
  • Multiple display modes
  • Web kiosk interface

fugleramme README

How to install fugleramme

Install fugleramme with Docker Compose

Linux host with /dev/snd for microphone access
Environment variables
TZ, BIRDNET_UID, BIRDNET_GID, ALSA_CARD

Brings up both Fugleramme and BirdNET-Go together with a USB microphone on Linux

How to configure fugleramme

  • FUGLERAMME_ADMIN_PASSWORDPassword for admin page authentication

    Password for admin page authentication

    values: any string

  • FUGLERAMME_BEHIND_PROXYfalseWhether the frame is behind a reverse proxy

    Whether the frame is behind a reverse proxy

    values: true | false

  • FUGLERAMME_DETECTOR_KINDbirdnet-goType of detection backend

    Type of detection backend

    values: birdnet-go | birdweather

  • FUGLERAMME_DETECTOR_PASSWORDPassword for BirdNET-Go if it uses Basic Authentication

    Password for BirdNET-Go if it uses Basic Authentication

    values: any string

  • FUGLERAMME_DETECTOR_PUBLIC_URLPublic URL for BirdNET-Go if browser reaches it at a different address

    Public URL for BirdNET-Go if browser reaches it at a different address

    values: any valid URL

  • FUGLERAMME_DETECTOR_STATIONBirdWeather station ID(s), comma-separated

    BirdWeather station ID(s), comma-separated

    values: comma-separated station IDs

  • FUGLERAMME_DETECTOR_TIMEOUT30Seconds to wait for BirdNET-Go response

    Seconds to wait for BirdNET-Go response

    values: integer seconds

  • FUGLERAMME_DETECTOR_URLhttp://birdnet.local:8080URL of the BirdNET-Go instance to poll for detections

    URL of the BirdNET-Go instance to poll for detections

    values: any valid URL

  • FUGLERAMME_DETECTOR_USERNAMEbirdnet-clientUsername for BirdNET-Go if client ID was changed

    Username for BirdNET-Go if client ID was changed

    values: any string

  • FUGLERAMME_EXTERNAL_PANELfalseServe /frame.e6 for external e-ink panel

    Serve /frame.e6 for external e-ink panel

    values: true | false

  • FUGLERAMME_LABEL_FONTgentiumFont for species labels

    Font for species labels

    values: gentium | garamond | cormorant | baskerville | playfair | alegreya | bitter

  • FUGLERAMME_LABEL_SIZEmediumSize of species labels

    Size of species labels

    values: small | medium | large | xlarge

  • FUGLERAMME_LOG_LEVELINFOLog level (DEBUG logs every request)

    Log level (DEBUG logs every request)

    values: DEBUG | INFO | etc.

  • FUGLERAMME_LOOKBACK_HOURS24Hours of detections to include in collage

    Hours of detections to include in collage

    values: 0.25 … 720, or 0 for all time

  • FUGLERAMME_MODEcollageDisplay mode for the collage

    Display mode for the collage

    values: collage | latest | arrival

  • FUGLERAMME_NAME_KEYfalseShow numbered key instead of names beside birds

    Show numbered key instead of names beside birds

    values: true | false

  • FUGLERAMME_PRIMARY_LANGUAGEnbPrimary language for species names

    Primary language for species names

    values: BirdNET-Go locale or 'sci'

  • FUGLERAMME_RANKINGheardHow to rank species on the page

    How to rank species on the page

    values: heard | rarest | rarest_ever

  • FUGLERAMME_REFRESH_MINUTES0Panel refresh interval in minutes

    Panel refresh interval in minutes

    values: 0 | 5 | 10 | 15 | 30 | 60

  • FUGLERAMME_REQUIRE_SIGN_INfalseRequire sign-in for admin page

    Require sign-in for admin page

    values: true | false

  • FUGLERAMME_ROTATION0Panel rotation in degrees

    Panel rotation in degrees

    values: 0 | 90 | 180 | 270

  • FUGLERAMME_SECONDARY_LANGUAGESecondary language for species names

    Secondary language for species names

    values: BirdNET-Go locale or empty

  • FUGLERAMME_SHOW_NAMEStrueShow species names on the page

    Show species names on the page

    values: true | false

  • FUGLERAMME_SPECIES_LIMIT40Maximum number of species on the page

    Maximum number of species on the page

    values: 0 for no limit

  • FUGLERAMME_SPOTLIGHTfalseSpotlight the latest heard bird

    Spotlight the latest heard bird

    values: true | false

  • FUGLERAMME_STYLEclassicArtwork style to use

    Artwork style to use

    values: style folder names

  • FUGLERAMME_WEB_ASPECT4:3Aspect ratio for web output

    Aspect ratio for web output

    values: 16:9 | 16:10 | 4:3 | 3:2

  • FUGLERAMME_WEB_PORTRAITfalseWhether web output is portrait orientation

    Whether web output is portrait orientation

    values: true | false

  • FUGLERAMME_WEB_RESOLUTION1080pWeb output resolution

    Web output resolution

    values: 720p | 1080p | 1440p | 4K

fugleramme releases & version history

FAQ

Can I use my own images?

Yes. Drop them in assets/artwork/custom/ on your own frame and they are picked up, named for the scientific name BirdNET-Go uses.

Is any of the included art AI-generated?

No. Every bird is cut from a plate drawn by a real person and retouched with conventional tools. A generative model may at most patch a small spot of damage.

Where are the settings?

On the admin page at http://<host>.local:8080/admin. The root path is the kiosk view which is deliberately just the picture.

Can I point it at a BirdNET-Go I already run?

Yes. It can be on the same machine or anywhere on your network. Set it during install, later in settings, or with an environment variable in the container.

Why isn't a bird I heard showing on the page?

Three possibilities: no artwork exists for that species (shown as 'no art' on admin page), it wasn't a bird (bats/frogs/squirrels are filtered out), or BirdNET-Go never recorded it (check its dashboard on port 8090).

Does it support my language?

Species names come in 40+ languages via BirdNET-Go. The Fugleramme UI itself currently only supports English.

Will it work where I live?

BirdNET works basically everywhere. The artwork coverage is best across Europe and northern Asia, good in North America, and thinner in the tropics and southern hemisphere but growing.

What does it cost to build?

Full 13.3" build with Pi 5: €380-450 / $420-500. Cheaper build with Pi 4 and 7.3" panel: €170-220 / $190-240. Frame-only reading external BirdNET-Go: €110-270 / $120-300 depending on panel.

Can I use a smaller or different Inky panel?

Yes, other Inky Impressions work and the resolution is read automatically. Below 13.3" the birds get small quickly, so you may want to limit how many species appear on the page.

Which Raspberry Pi should I use?

A Pi 5 for the full build with BirdNET-Go running locally. For a frame-only setup reading from an external BirdNET-Go, any 40-pin Pi works including Pi 4 and Pi Zero 2 W.

Do I need the e-ink panel?

No. Fugleramme serves the same page over HTTP either way, displaying on a TV, HDMI display, any device on the network, or as a desktop wallpaper.

Do I need a Raspberry Pi?

Only for the e-ink panel which plugs directly into a Pi's GPIO pins. Everything else runs wherever Python or Docker does - a NAS, homelab, or old laptop.

More in IoT

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…