The hub. Single LMS poll, cover art indexing, genre & MusicBrainz metadata enrichment, Last.fm config propagation. On-screen debug-panel optional.
⭐ Required
v1.4.0
MagicMirror² · Lyrion Media Server · Radio Paradise
Your mirror that listens.
29 MagicMirror² modules. One LMS connection. A complete music ecosystem for your smart mirror — genre clock, vinyl display, scrolling lyrics, 3D artist globe, top tracks and artists, listening-history timeline, concert events, fullscreen artwork, and more. Optimized for Radio Paradise.
Lyrion Universe is built around a single principle: MMM-LyrionProvider
polls your Lyrion Media Server exactly once. Every other module listens to its
notifications — no duplicate network calls, no competing polls, no race conditions.
All modules are user friendly and highly configurable via config.js.
Start your journey now and create your own unique Lyrion Universe.
One connection feeds all 29 modules. Cover art, genre tags, playback state — centralised.
7 palettes, 8 main genres, 5 intensity levels. Color up your listening experience.
Run any module on multiple mirrors with no local LMS connection — bridged over WebSocket.
Lyrion Universe didn't start as a generic LMS frontend — it grew around one listening habit: Radio Paradise, 24/7. The whole ecosystem is tuned for continuous, hand-curated, genre-hopping FLAC streams.
Why RP fits perfectly
Radio Paradise jumps from classic rock to electronica to world to jazz within a single hour, with clean live track-change metadata on every song. That is exactly the kind of input the genre engine, palettes and history modules were designed to feast on — variety is the feature, not the edge case.
Every track change is captured the moment it happens — cover art, artist, genre enrichment, lyrics lookup, all driven off the same single poll.
The Genre Clock, Bubbles and Timeline thrive on RP's eclectic mix. A week of listening paints all seven rings instead of one flat colour.
MMM-LyrionRevive watches for silence and falls back to a radioparadise:// FLAC stream — the mirror is never quiet for long.
Every visual module reads genre colour from the same shared palette file. Switch palette on the Clock — everything follows smoothly.
balanced
Neutral, readable on any background
stainedGlass
Rich jewel tones
dream
Pastel, low contrast
neon
High-saturation, dark
aurora
Cool blues & greens
ember
Warm reds & oranges
vintage
Muted, desaturated
stainedGlass
Run your full Lyrion Universe on multiple mirrors — no LMS connection, no Provider installation needed. MMM-LyrionArch connects to the host over WebSocket, receives a complete sync dump of all data files, and re-broadcasts every playback event locally. Most modules work on the client as if they were running next to the Provider.
clock-state.json, play-history.json, artwork-index.json, legend.json20 stable + 9 beta. Always start your discovery with Provider.
Stable
Infrastructure
The hub. Single LMS poll, cover art indexing, genre & MusicBrainz metadata enrichment, Last.fm config propagation. On-screen debug-panel optional.
⭐ Required
v1.4.0
WebSocket bridge. Syncs all Provider events and data files to a client mirror. On-screen debug-panel optional.
⭐ Required on client mirrors
v1.1.2
Lyrion-aware page manager. Coordinates fade transitions and module suspend/resume. Per-page hidden modules and fade-free module swaps.
v1.2.1
Compatibility layer for the popular MMM-Pages module — lets Lyrion modules suspend/resume cleanly under an external page rotation.
v1.0.0
Network health monitor. Latency, jitter, packet loss, freeze detection per LMS player. On-screen debug-panel optional.
⭐ Polls LMS directly
v1.0.4
Headless auto-restart watcher. On prolonged silence it falls back to a radioparadise:// FLAC stream, with a per-hour revive cap.
v1.0.4
Clock-state family
Circular genre clock. Seven rings, one per weekday. 280 colors. The clock-state engine the whole family reads from. Optional canvas build in statistics order.
⭐ Required for the clock-state family
v1.1.3
Floating genre bubbles. Size = listening time. Subgenre dot legend around each bubble optional.
v1.1.1
Vertical bar chart of listening time by release year. Two-layer genre colouring.
v1.1.0
Synchronised scrolling lyrics in a circular frame. Artist legend ring, genre-coloured.
v1.0.4
Album art from your play history as cross-fading circular bubbles. Legend with metadata optional.
v1.0.6
Rotating vinyl record with cover art, tonearm, platter, groove & led overlay and metadata.
v1.3.0
Now playing & history
Little bro of Vinyl. Shows cover art, time remaining and metadata.
v1.0.3
Chronicles data with a clean NowPlaying-style look — no palette, no genre colouring. Panel built on MODULE_DOM_CREATED.
v1.0.4 · parked
Rotating top tracks by week / month / year / all time, from your own Lyrion play history.
v1.4.0
Top artists with genre, country, top album. TheAudioDB images, cached locally. From your own Lyrion play history.
v1.4.0
Standalone
Fullscreen artwork from the Art Institute of Chicago matched to the playing track. Fully-Kiosk mode optional.
v1.0.3
Persistent ticket tracker with cache + diff-refresh. Smart tribute-band filtering so cover acts don't drown out the real artist.
v1.2.3
Interactive 3D globe. Artist home cities/countries plotted in real time with day/night shader, realtime sun, clouds and seasonal changes.
v1.1.1
Animated ON AIR sign. Fades on when a track plays and off when playback stops, with an optional glow. Works on host (Provider) and client (Arch) mirrors.
v1.0.3
Beta 🧪
Canvas spectrum visualizer. Palette-synced, genre-weighted mosaic; PipeWire audio tap or metadata-driven animation.
v0.11.4 🧪
Analog-style VU meter. RMS / Peak / channel correlation read live from a PipeWire tap via parecord.
v0.11.4 🧪
Sets Home Assistant lights to a per-lamp, per-palette colour and brightness — fixed, or by genre rank (rank:N, last 14 days, like Bubbles). Invisible module.
v0.12.2 🧪
Skips unwanted artists and tracks in the Radio Paradise interactive stream. Blacklist via config entries or one click in the frontend (writes blacklist.js); mouse and touch. Optional control bar under the Vinyl.
v0.6.0 🧪
Re-draws the Clock face and spotlights one genre at a time (rank 1 = most listened, last 14 days). Rotating ranks, info menus with subgenres and top artists, optional intro/outro and smooth palette fades.
⭐ Requires MMM-LyrionClock
v0.9.0 🧪
New and announced releases of the artists you listen to — paged view, “just released” then “upcoming”. Data from ListenBrainz Fresh Releases, fetched once a week by the Provider.
⭐ Needs Provider ≥ 1.2.0 with releasesEnabled
v1.3.0 🧪
Lyrics panel at the screen edge: time-synced window or smoothly scrolling plain text. Scored lrclib matching for a better hit rate than Lyrics V1. Don’t run V1 and V2 on the same page.
v0.2.0 🧪
Draws artist-specific SVGs for the playing track like a pen plotter, with a fallback folder. Bring your own SVGs.
v1.0.1 🧪
Word cloud of the most frequent nouns, verbs and adjectives in the titles you listened to (week / month / year / overall), coloured by palette. English only.
v0.5.5 🧪
🎧 Radio-Paradise-tuned · 🕒 reads clock-state · 🧪 Beta — audio pipeline, API may still change
One poll to rule them all.
Lyrion Media Server ▲ │ JSON-RPC (polling) ▼ MMM-LyrionProvider (host) → provides cover art index, genre + MusicBrainz enrichment, play history and APIs │ → distributes MM notifications (LYRION_*) │ ├──▶ MMM-LyrionPages → controls visibility and synchronization ├──▶ MMM-LyrionPagesExt → MMM-Pages compatibility layer │ │ ─ clock-state family ─ ├──▶ MMM-LyrionClock → writes clock-state.json ├──▶ MMM-LyrionBubbles ← reads clock-state.json ├──▶ MMM-LyrionTimeline ← reads clock-state.json ├──▶ MMM-LyrionLyrics ← clock-state.json + legend.json ├──▶ MMM-LyrionChronicles ← clock-state.json + artwork-index.json ├──▶ MMM-LyrionVinyl ← reads clock-state.json ├──▶ MMM-LyrionClockStatistics 🧪 ← reads clock-state.json │ ├──▶ MMM-LyrionNowPlaying ├──▶ MMM-LyrionChroniclesClassic ← artwork-index.json ├──▶ MMM-LyrionTopTracks ← reads play-history.json ├──▶ MMM-LyrionTopArtists ← play-history.json + artwork-index.json ├──▶ MMM-LyrionArtwork ├──▶ MMM-LyrionEventTickets ← tickets-cache.json ├──▶ MMM-LyrionOnAir └──▶ MMM-LyrionWOM │ │ ─ audio tap: squeezelite-vis → Dummy sink → parecord ─ ├──▶ MMM-LyrionVisualizer 🧪 ← clock-state.json ├──▶ MMM-LyrionVU 🧪 │ │ ─ beta ─ ├──▶ MMM-LyrionHA 🧪 ← clock-state.json → Home Assistant lights ├──▶ MMM-LyrionSkip 🧪 ├──▶ MMM-LyrionReleases 🧪 ← Provider releases (ListenBrainz) ├──▶ MMM-LyrionLyricsV2 🧪 ├──▶ MMM-LyrionPlotter 🧪 ├──▶ MMM-LyrionTags 🧪 ← play-history.json ▼ └──▶ MMM-LyrionArch (client) re-broadcasts LYRION_* locally to all modules on client mirror MMM-LyrionWatchdog → independent LMS health monitor MMM-LyrionRevive → headless silence-watch, radioparadise:// fallback
| Module | Version | Status | Download | SHA‑256 |
|---|---|---|---|---|
| MMM-LyrionProvider | 1.4.0 | Stable | .zip | |
| MMM-LyrionArch | 1.1.2 | Stable | .zip | |
| MMM-LyrionPages | 1.2.1 | Stable | .zip | |
| MMM-LyrionPagesExt | 1.0.0 | Stable | .zip | |
| MMM-LyrionWatchdog | 1.0.4 | Stable | .zip | |
| MMM-LyrionRevive | 1.0.4 | Stable | .zip | |
| MMM-LyrionClock | 1.1.3 | Stable | .zip | |
| MMM-LyrionBubbles | 1.1.1 | Stable | .zip | |
| MMM-LyrionTimeline | 1.1.0 | Stable | .zip | |
| MMM-LyrionVinyl | 1.3.0 | Stable | .zip | |
| MMM-LyrionNowPlaying | 1.0.3 | Stable | .zip | |
| MMM-LyrionLyrics | 1.0.4 | Stable | .zip | |
| MMM-LyrionChronicles | 1.0.6 | Stable | .zip | |
| MMM-LyrionChroniclesClassic | 1.0.4 | Stable | .zip | |
| MMM-LyrionTopTracks | 1.4.0 | Stable | .zip | |
| MMM-LyrionTopArtists | 1.4.0 | Stable | .zip | |
| MMM-LyrionArtwork | 1.0.3 | Stable | .zip | |
| MMM-LyrionEventTickets | 1.2.3 | Stable | .zip | |
| MMM-LyrionWOM | 1.1.1 | Stable | .zip | |
| MMM-LyrionOnAir | 1.0.3 | Stable | .zip | – |
| MMM-LyrionVisualizer | 0.11.4 | Beta | .zip | |
| MMM-LyrionVU | 0.11.4 | Beta | .zip | |
| MMM-LyrionHA | 0.12.2 | Beta | .zip | – |
| MMM-LyrionSkip | 0.6.0 | Beta | .zip | – |
| MMM-LyrionClockStatistics | 0.9.0 | Beta | .zip | – |
| MMM-LyrionReleases | 1.3.0 | Beta | .zip | – |
| MMM-LyrionLyricsV2 | 0.2.0 | Beta | .zip | – |
| MMM-LyrionPlotter | 1.0.1 | Beta | .zip | – |
| MMM-LyrionTags | 0.5.5 | Beta | .zip | – |
No git needed — download the zips, verify, unzip, done. Start with the Provider, then add modules one at a time.
npm install only needed for Provider and Archsqueezelite-vis instance into a Dummy sink, read via parecordlastfm (default) or merge; with lyrion it is not needed. TopTracks and TopArtists use only your Lyrion play history. Get one →free API."MyMirror/1.0 (you@example.com)".geoMapping.email is required by Nominatim ToS for MMM-LyrionWOM.The short answers.
No. Start with the Provider — it's the only required piece — and add the rest one at a time. Every other module is plug-and-play.
Yes — completely. MIT-licensed, no paywalls, no premium tiers, no ads. If it brings you joy and you'd like to give something back, skip the tip jar and donate to a charity for people in need instead. The best things in life are free — let's keep it that way.
npm install?No. Only Provider and Arch pull npm dependencies. Every other module runs as-is once unzipped into the modules folder.
Yes. Everything works with any LMS source, as log as metadata is provided via your LMS-Server. Radio Paradise is simply where it shines brightest, thanks to its endless, genre-hopping live stream.
Yes. The Arch bridge syncs all Provider data and events to a client mirror, so most modules work on the client as if they were running next to the Provider.
A Last.fm key is highly recommended for the Provider (genre enrichment) and also needed by EventTickets unless you set its top-artist source to lyrion; TopTracks and TopArtists use only your own play history and need no key. A Ticketmaster key is required for EventTickets. MusicBrainz and Nominatim need no registration — just a valid contact email in the User-Agent string.
They sit on the audio pipeline and need a PipeWire tap — a dedicated squeezelite-vis instance into a Dummy sink, read via parecord — so their API may still change.
Not directly — this is a one-person passion project, so there's no helpdesk. But you're far from alone: the MagicMirror community is excellent. Head to the MagicMirror forum — it's the best place to get unstuck.
Yes. There are ongoing updates and, now and then, new modules. Since there's no Git repo to watch, either drop by this page every once in a while, or head to the MagicMirror forum.
Absolutely not. Get yourself some professional help and become a better human being.
The (short) story behind the Lyrion Universe.
My journey began in May 2025. Someone (sorry, I can't find the post in the MM-forum) posted a Lyrion Now Playing module which I liked a lot. I started to develop my own modules based on LMS. With the rise and the constant improvement of AI-coding-tools the amount of modules was growing quickly.
I realised, that the multiple LMS polls caused by those modules crashed my docker based LMS-Server (it's not the newest hardware). I started from scretch, MMM-Lyrion-Provider was the result, and here we are.
The cornerstone of my love for music was laid early in life. Growing up in a musical family, I studied church organ for five years before moving on to the piano. Music was everywhere in the home I grew up in, where three generations lived together under one roof. There was no celebration, no anniversary, no gathering without playing, singing and dancing.
After the Second World War, in times of great desperation, my grandfather and his brother founded a brass band that played far beyond our region. They brought joy and happiness to all those who had suffered during those terrible times. My parents followed in those footsteps — both of them multi-instrumentalists — and played in an entertainment band with friends, covering an enormously wide range of music. I played their mostly hand-written arrangements on organ and piano with boundless enthusiasm: pieces from every genre, from Schlager to hard rock.
My father's stereo systems left a particularly deep mark on me. From vinyl through the tape deck to the CD, I lived through the whole evolution of hi-fi — always paired with beautiful-sounding speakers. The first mixtapes were born, recordings were traded with friends, a teenage band was formed. At the same time, electronic music was on the rise. Using my parents' retired synthesizers and their old mixing desk, I built a little home studio of my own around an Atari 1040ST. Inspired by André — friend and mentor — my first production took shape.
The years that followed, shaped by my studies, were musically quieter. Beyond a few smaller projects, what mattered most were the concerts and festivals across Europe with friends. They opened my musical horizons once again, and the love of (live) music they kindled has stayed with me ever since.
So it comes as no surprise that I'm married to a wonderful music teacher and singer, and that our daughter shares the same joy in music and in playing the piano. I love you both with all my heart ❤
My deepest gratitude goes to my whole family and my friends, who take me and love me exactly as I am (and that isn't easy all the time). A further thank-you goes, of course, to all the MM & LMS developers and supporters. And a heartfelt thank-you, too, to all the free services woven into this project, especially to Radio Paradise. You inspire me each and every single day! Everybody please remember: The best things in life are free! Let's keep it that way.
Do you have something nice to say?