Turn any display into a family board. picture frame. smart-home hub. status display.
Self-hosted dashboard for kitchen monitors, wall panels and picture frames. Drag-&-drop editor, deep Home Assistant integration, Immich albums as wallpaper. Local, no cloud, no account.
Drag a widget onto the grid → configure in the inspector → save → live sync to every connected display.
What's inside
One tool, many displays
Magic Frame turns any browser-capable screen — tablets, kitchen monitors, old TVs, even picture frames — into something useful in your home network.
Drag-&-drop editor
Build layouts on a 24-column grid without ever editing YAML or CSS. Resize, snap, save — and your tablets pick up the change instantly. Light or dark per view, or automatic by sun position.
Status cards
A card that shows up while something is actually happening — the car is charging, the printer is printing, the dryer is running. Device image, live values, progress as a bar or a ring. Gone again when it's over.
Deep Home Assistant
Live entity updates, media-player tiles with album-art wallpaper, camera tiles, HA-triggered show/hide, buttons that call services. And HA drives the displays back — one REST call sends every screen to a view.
Live preview
Every widget renders live while you configure it — the real component with real data, not a mock-up. Widgets that only appear on an event fabricate sample content from your own rules, icons and colours.
Picture frame mode
Wallpapers rotate from Immich or a WebDAV folder, LAN-only. Pick several albums and they merge into one shuffled slideshow — the whole library, not a capped sample. One tap toggles HA entities over the photos.
Live sync everywhere
Change a widget on your laptop and every connected display updates in under 100 ms over WebSocket. Multi-view, multi-screen.
Custom widgets
Upload a JS bundle through the UI and it's hot-loaded across every display. No container restart. Community-built modules are indexed in GitHub Discussions — grab one, or share your own.
Self-host ready
Optional Caddy reverse proxy with automatic Let's Encrypt, DDNS updater, 2FA TOTP, brute-force protection. All off by default. Community-maintained Helm chart if you run Kubernetes.
In your setup
Same project, completely different displays
A small framed tablet on the side table or a portrait monitor on the wall — Magic Frame renders the same dashboards, the same Home Assistant entities, the same Immich photos.
Picture frame on a side table
A small tablet in a real photo-frame mount. By default it just rotates wallpapers from your Immich album and shows a tiny clock. Tap the toggle once and HA scene buttons fade in over the photo.
Wall monitor as family board
A portrait monitor on the wall — clock, calendar, live HA notifications and a 4-day weather forecast layered over an Immich-fed wallpaper.
Notifications, up close
Rule-based notification tiles auto-show when something happens ("Washing machine done", "Feed Milou", "Dryer done") and auto-hide once acknowledged. Wallpaper keeps running underneath.
Inside the app
A control center you actually want to open
Everything's in one self-hosted app — dashboards, integrations, a drag-&-drop editor. No YAML, no CSS file editing.
Control center
Live system & status strip (HTTPS, DDNS, HA, Todoist, modules, backups, security) and mini-previews of all your views.
Views & layouts
Each view is its own URL for one display — portrait, landscape, picture-frame mode. Add, duplicate, edit, delete.
Drag-&-drop editor
24-column grid, widget catalog on the left, inspector on the right. Auto-snapshot before every save, live-sync to every connected display.
Quick start
Two commands, running in 5 minutes
Anywhere Docker runs — Raspberry Pi 4/5, a NAS, an old laptop, a Mac mini, your homelab.
curl -fsSL https://get.docker.com | sh
curl -fsSL https://raw.githubusercontent.com/jeremiaa/magic-frame/main/deploy/install.sh | bash Why I built it
It started with a kitchen monitor.
We have a portrait monitor mounted on the wall in the kitchen as our family board — shopping list, calendar, weather, who needs to feed the cat. I tried DAKboard, MagicMirror², a few HA dashboard hacks, and none of them quite fit.
So I built my own. Magic Frame is a drag-&-drop dashboard that talks deeply to Home Assistant, rotates wallpapers straight from your local Immich, and lets the same tablet be a picture frame and a smart-home dashboard depending on a single tap.
Star it on GitHub.
Run it on your network.
License is Polyform Noncommercial — free for personal, household, club, NGO and school use.