Perch

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

PerchMagicMirror²
Arranging itDrag tiles in a browser; the desk screen follows liveEdit config.js, restart, look up
Adding your own tileOne folder: a manifest, a component, about forty linesAn MMM- Node module written against the plugin API
A widget’s settings screenGenerated from the manifest; you write no UIYou write it, or it lives in the config file
Voice to your own AIYes — any endpoint, including one running on the PiNo first-party equivalent
Ready-made extensionsEight in the box; the registry just openedAround a thousand community modules
TouchFirst-class; tap and drag on the panelRarely — glass is not touched
Where it usually goesThe desk you sit atBehind a mirror on a wall
At nightPalette inverts and the panel backlight dims with the sunModule-dependent; often a separate add-on
Licence and priceMIT, freeMIT, 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.