Introduction
MagicMirror² is an open-source modular smart mirror platform built on Electron and Node.js. It lets you build a voice-free information dashboard behind a two-way mirror, displaying weather, calendar events, news headlines, and virtually anything else via community-contributed modules.
What MagicMirror² Does
- Renders a full-screen dashboard designed for two-way mirror displays
- Ships with built-in modules for clock, calendar, weather, news feed, and compliments
- Supports over 1,000 third-party modules contributed by the community
- Runs on Raspberry Pi, Linux desktops, or any system with Node.js
- Provides a simple JSON config file for module selection and layout
Architecture Overview
MagicMirror² is an Electron application that loads a local web page as the mirror UI. The server component runs on Node.js and manages module lifecycle, configuration, and a socket-based notification system. Each module is a self-contained JavaScript class that registers with the core, receives periodic updates, and renders its own DOM fragment into a configurable screen region.
Self-Hosting & Configuration
- Requires Node.js 20+ and npm; Raspberry Pi OS is the recommended platform
- Edit
config/config.jsto add or remove modules and set their positions - Install third-party modules by cloning them into the
modules/directory - Configure the built-in weather module with a free OpenWeatherMap API key
- Run as a systemd service with
pm2for automatic startup on boot
Key Features
- Completely modular architecture with hot-reloadable modules
- Position-based layout system (top_bar, upper_third, middle_center, etc.)
- Module notification system for inter-module communication
- Built-in update mechanism for core and third-party modules
- Active community with a dedicated forum and module registry
Comparison with Similar Tools
- Home Assistant dashboards — full home automation but heavier; MagicMirror² is purpose-built for mirror displays
- Dakboard — commercial SaaS dashboard; MagicMirror² is fully self-hosted and free
- Grafana panels — metrics-focused; MagicMirror² targets consumer info at a glance
- Smart Homey — proprietary hardware; MagicMirror² runs on commodity Raspberry Pi
FAQ
Q: Do I need a Raspberry Pi? A: No. MagicMirror² runs on any system with Node.js, but a Pi is the most common deployment for physical mirror builds.
Q: Can I control it remotely? A: Yes. The MMM-Remote-Control module exposes an HTTP API for managing the mirror from a phone or browser.
Q: Does it support voice control? A: Community modules integrate with Alexa, Google Assistant, and local wake-word engines like Porcupine.
Q: How do I create my own module? A: Extend the base Module class in JavaScript, register your module in config.js, and follow the developer documentation for lifecycle hooks.