Write-up
MagicMirror²: an open source Raspberry Pi smart mirror
Open source framework for building a Raspberry Pi smart mirror from modular widgets.
MagicMirror² turns a Raspberry Pi into a smart mirror with weather, calendar and news. Here is what it takes to install and configure it yourself.
At a glance
- Type: open source framework for building your own Raspberry Pi smart mirror or wall display from modular widgets called modules (magicmirror.builders, read 2026-09-28)
- Pricing: free, MIT licensed (github.com/MagicMirrorOrg/MagicMirror, read 2026-10-24)
- License: MIT
- Install: a manual
git cloneplus Node.js is the only officially supported route; a Docker image, a Kubernetes Helm chart, an npm package and community installer scripts exist as unofficial alternatives (docs.magicmirror.builders, read 2026-10-24) - Platforms: built for Raspberry Pi 2, 3, 4 and 5 running the full Raspberry Pi OS; also runs on Linux, macOS and Windows hosts, or headless in a documented server-only mode reachable from any browser
- Links: magicmirror.builders · docs.magicmirror.builders · modules.magicmirror.builders · GitHub
- Price
- $0 USD, checked (source)
Last checked
What it is and who it's for
MagicMirror² began in 2014 as a personal project by Michael Teeuw. The repository is now maintained under the MagicMirrorOrg organization on GitHub, with 24,153 stars, 4,581 forks and 6 open issues, and a push on 2026-10-24 (github.com/MagicMirrorOrg/MagicMirror, via gh api, read 2026-10-24). The most recent tagged release is v2.38.0, published 2026-10-01. The project was voted number one in Raspberry Pi magazine MagPi's 50th-issue Top 50 feature, and its own forum has run over 14,000 topics since launch.
It is a framework rather than a finished product. You provide the Raspberry Pi, a screen, and typically a two-way mirror and a case to hold it, then install and configure MagicMirror² yourself by editing a JavaScript config file. That makes it a good fit for someone who wants a Raspberry Pi project to build and is comfortable in a terminal, and a poor fit for someone who wants to plug something in and have a family calendar running five minutes later. DAKboard, covered under Alternatives below, is built for that second case instead.
Features worth knowing
Seven modules ship by default: Clock, Calendar, Weather, News Feed, Compliments, Hello World and Alert (docs.magicmirror.builders/modules/introduction.html, read 2026-09-28). The Weather module alone supports a dozen data providers, including OpenWeatherMap, Pirate Weather, Weather.gov, the UK Met Office, Weatherbit, Environment Canada, Open-Meteo, WeatherFlow, SMHI, WeatherAPI, Buienradar and Yr, each with its own required options and, for most of them, its own API key. Since version 2.35.0, a separate theme system lets you restyle the weather module's look without writing a new module from scratch (docs.magicmirror.builders/modules/weather.html, read 2026-09-28).
The real scale is in the third-party ecosystem. The project's own module gallery lists 1,496 community-built modules across 16 categories, from Calendar and Weather to Smart Home, Sports, Public Transport and Voice Control (modules.magicmirror.builders, read 2026-10-24). Popular examples include MMM-Remote-Control (603 stars, shuts down or reboots the mirror and manages modules from a phone) and mmpm, an unofficial package manager for installing and updating other modules. The gallery states plainly that these modules "are not tested for security and their use is at your own risk."
Getting started
The only officially supported install is manual. With a compatible Node.js version and git already in place:
git clone https://github.com/MagicMirrorOrg/MagicMirror.git
cd MagicMirror
node --run install-mm
cp config/config.js.sample config/config.js
node --run start
(source: docs.magicmirror.builders/getting-started/installation.html, read 2026-10-24.) The docs warn that the install-mm step can take around 10 minutes on a Raspberry Pi 3 and closer to 25 minutes on a Pi 2, often with little terminal output while it runs.
The full version of Raspberry Pi OS is required, not the Lite build, because Electron, the app wrapper MagicMirror² uses to display itself, needs a desktop environment; Electron also only supports Raspberry Pi 2, 3, 4 and 5, leaving the Pi 0 and 1 unsupported (docs.magicmirror.builders/getting-started/requirements.html, read 2026-09-28). If a mirror-style Electron window isn't needed, a documented server-only mode runs headless and serves the display to any browser on the network, once the config's address is set to 0.0.0.0 and the ipWhitelist is widened to allow the connecting device.
Past the official route, the community maintains a Docker image, a Kubernetes Helm chart, an npm package and separate installer and update scripts; the docs state directly that none of these are maintained by the core team, and using them is at your own risk.
Pricing (checked 2026-10-24)
Free. MIT licensed, no account, no subscription, and no vendor anywhere in the loop, confirmed against the repository and its docs today. The real cost is hardware: a Raspberry Pi, a screen, and if you want the traditional look, two-way mirror glass and a case, none of which the project sells itself.
Limits and trade-offs
Configuration is entirely manual. There is no settings interface; every module is added and tuned by hand-editing config.js in JavaScript object syntax, and the install step itself can run for 10 to 25 minutes with almost no feedback on a Raspberry Pi.
Security is explicitly the installer's responsibility. The docs state that MagicMirror² "was originally designed to run on a Raspberry Pi and display on a connected screen" with "no consideration... given to other use cases, at least not from a security perspective," and warn against ever exposing an instance directly to the internet without a properly configured reverse proxy, authentication and HTTPS in front of it.
The built-in module set is thin by design: only Clock, Calendar, Weather, News Feed, Compliments, Hello World and Alert ship out of the box. Anything past that, including nearly every smart home, transit or sports integration, means pulling a module from the 1,496-strong third-party gallery, and the project itself flags that those modules are not tested for security.
There is no dedicated hardware. Unlike TRMNL or Skylight Calendar, nothing ships ready to mount; sourcing a Raspberry Pi, a screen and, usually, two-way mirror glass is left entirely to whoever installs it.
Alternatives
- DAKboard, hosted rather than self-hosted, with nothing to install, but $5 to $8 a month for anything past a single free screen.
- Inkycal, also open source and Raspberry Pi based, but built around e-paper panels instead of a lit screen behind mirror glass.
- InkyPi, the closer open source comparison for e-ink: configured from a browser rather than a text file, and still self-hosted and free.
- TRMNL, a finished piece of hardware for a one-time cost, with no Raspberry Pi, wiring or config file involved.
Questions people ask
What does a smart mirror do?
It overlays information such as the time, a calendar, weather and headlines on a screen mounted behind two-way mirror glass, so it reads as a mirror until something needs to be shown. MagicMirror² is software you install to build one yourself; it does not sell the mirror or the glass.
Which smart mirror is the best?
There is no single best pick. MagicMirror² is the dominant open source option and was voted number one in Raspberry Pi magazine MagPi's Top 50, but it is a framework you assemble and configure, not a finished product you unbox. Someone who wants a screen that works without building anything is better served by a hosted product like DAKboard or a finished piece of hardware like TRMNL.
Does Raspberry Pi OS have GUI?
The full version does; the Lite version does not, and MagicMirror²'s own requirements page says the Lite build will not work because its Electron app wrapper needs a desktop environment to display in. A Raspberry Pi 2, 3, 4 or 5 running the full Raspberry Pi OS is what the docs call for.
Sources
- magicmirror.builders, read 2026-09-28
- docs.magicmirror.builders/getting-started/installation.html, read 2026-10-24
- docs.magicmirror.builders/getting-started/requirements.html, read 2026-09-28
- docs.magicmirror.builders/modules/introduction.html, read 2026-09-28
- docs.magicmirror.builders/modules/weather.html, read 2026-09-28
- modules.magicmirror.builders, read 2026-10-24
- github.com/MagicMirrorOrg/MagicMirror, via
gh api, read 2026-10-24 - github.com/MagicMirrorOrg/MagicMirror/releases/tag/v2.38.0, via
gh api, read 2026-10-24
Last checked 2026-10-24.