perch vs magicmirror²
A MagicMirror alternative for a desk, not a mirror.
MagicMirror² has been the answer to "Raspberry Pi dashboard" since 2016, and its module library is a decade deep. Perch is not trying to beat that on ecosystem. It is a different trade: you arrange it by dragging tiles in a browser while the desk screen follows along, a widget is one folder rather than a Node module against a plugin API, and there is a talk button. A button you press to talk to whatever AI you already own — OpenAI, Anthropic, Groq, an Ollama model running on the Pi itself with nothing leaving the house, or the coding agent already open in your terminal.
side by side
| Perch | MagicMirror² | |
|---|---|---|
| Arranging it | Drag tiles in a browser; the desk screen follows live | Edit config.js, restart, look up |
| Adding your own tile | One folder: a manifest, a component, about forty lines | An MMM- Node module written against the plugin API |
| A widget’s settings screen | Generated from the manifest; you write no UI | You write it, or it lives in the config file |
| Voice to your own AI | Yes — any endpoint, including one running on the Pi | No first-party equivalent |
| Ready-made extensions | Eight in the box; the registry just opened | Around a thousand community modules |
| Touch | First-class; tap and drag on the panel | Rarely — glass is not touched |
| Where it usually goes | The desk you sit at | Behind a mirror on a wall |
| At night | Palette inverts and the panel backlight dims with the sun | Module-dependent; often a separate add-on |
| Licence and price | MIT, free | MIT, free |
When MagicMirror is the better answer
- You are building an actual mirror. Perch is a desk instrument; it will run behind glass, but nothing about it is designed for that and MagicMirror is.
- The module you want already exists. A thousand modules is a real advantage and eight is not close. If someone has already written the exact integration you need, use it.
- You are comfortable in a config file and do not want a web console in the loop.
- You want a project with ten years of forum posts behind it. Almost any problem you hit has already been hit by someone in 2019, and written down.
When Perch is the better answer
- The screen is going on a desk within arm’s reach, and you want to touch it.
- You want to ask it something out loud and have your own model answer, local or not.
- You want to add a tile this evening without learning a plugin API. A widget is a folder, and the agent in your terminal can write one from a three-line prompt.
- You would rather drag a tile into place and watch the desk screen move than restart a service to find out.
while you are deciding
Can Perch run behind a two-way mirror like MagicMirror?
It will run on any Linux board with a screen, so physically yes. But Perch is built around colour, touch and a talk button, and a mirror gives up all three. If a mirror is the goal, MagicMirror is the better-fitted project and this is not a close call.
Do I have to rewrite my MagicMirror modules?
Yes — the formats have nothing in common. A MagicMirror module is a Node module against a plugin API; a Perch widget is a folder with a manifest, a component and an optional server file. The upside is that it is a much smaller thing to write, and pointing a coding agent at the docs and one worked example is the documented path rather than a shortcut.
Is MagicMirror still maintained?
Yes, actively, with a large forum and a module registry that keeps growing. Nothing here is an argument that it is dying. It is an argument that it is aimed at a mirror on a wall, and this is aimed at a display on a desk.