The operating system for smart frames

Turn a Raspberry Pi or ESP32, and any display - e-ink, HDMI or LCD - into a calendar, dashboard or art frame that runs itself. Everything renders on the device. No cloud, no subscriptions, no compromises.

Install the backend (via docker)

Free & open source since 2023 (AGPL-3.0) · Works offline · Yours forever

13.3 inch Spectra 6 e-ink panel in a 3D-printed case on a wallKitchen calendar on a 12.48 inch e-ink displayTwo e-ink frames with 3D-printed kickstandsHallway dashboard on a 5.7 inch e-ink display by the front doorPhone scanning the QR code shown on a frame to control itAI-generated image and haiku on a 12.48 inch e-ink displayRound LCD showing a thermostat in a bathroom
13.3" Spectra 6 color e-ink on the wall - refreshes a few times a day

How it works

Three steps to a frame that runs itself

The backend deploys over SSH or a flashed SD card. After that, the frame is on its own - the backend can go back to sleep.

  1. 1

    Run the backend anywhere

    One command on your laptop, server or NAS - or install the Home Assistant add-on. It's a local web app, not a service you sign up for.

  2. 2

    Connect a Pi or ESP32 to a display

    Flash a prebuilt FrameOS SD image, stock Raspberry Pi OS Lite - or an ESP32-S3, straight from the browser. Plug in any of 120+ supported panels, or just an HDMI cable (Pi only).

  3. 3

    Deploy scenes, then walk away

    Pick prebuilt scenes or design your own, hit deploy, and you're done. The frame renders on-device and is controlled from its own QR code and HTTP API (still experimental for ESP32).

The backend

A visual editor backed by real code

Scenes are node graphs: red events, green data apps, blue render apps, yellow state. They compile to a single binary that runs on the frame.

The FrameOS scene editor with a node graphPrebuilt scenes in the FrameOS backendScene control fields in the FrameOS backendEditing the source code of an app in FrameOSFrame settings in the on-device admin panel
Design scenes in the visual editor: events, data, render apps and state

Pick your hardware

Raspberry Pi or ESP32?

FrameOS runs best on real Linux - from the $15 Pi Zero 2 W up: deploys over WiFi instead of re-flashing firmware, TrueType fonts and SVGs at any resolution, dithering for six-color e-ink, TLS, iCal parsing, headless Chromium screenshots, and a web server on the frame itself.

Want a wire-free frame instead? FrameOS runs on the ESP32-S3 for Waveshare SPI e-paper panels: flash it from the browser, render scenes on-device, update over the air, and deep-sleep between refreshes for battery power. Each firmware image contains one selected panel driver.

Read the ESP32 guide →
A slim e-ink frame with a 3D-printed kickstand

Case Maker

Design a printable case around your exact frame

The FrameOS Case Maker generates parametric, 3D-printable enclosures for supported panels and Raspberry Pi layouts. Pick a template, tune the depth and bezel, add wall mounts, kickstands, USB-C cutouts and screw posts, then download the STL.

It is built for the same hardware database as the docs, so common Waveshare and Pimoroni builds start from sane dimensions instead of a blank CAD file.

The FrameOS Case Maker interface for configuring a 3D-printed frame enclosure

Batteries included

Deploy a scene in your first five minutes

Curated galleries, calendars, agendas, message boards, weather, webcams, AI art - installable with one click, editable down to the source.

Made in Space gallery sceneCalendar sceneMasterpieces gallery sceneMessage board sceneAbstract architecture sceneSplit agenda sceneXKCD sceneCyberPunk EU gallery scene

Watch a full build

From bare panel to finished frame

Waveshare vs Pimoroni Spectra 6 panels, 3D-printed slim cases, USB-C power, and the FrameOS software setup - in one video.

Build your first frame this weekend

A Raspberry Pi or ESP32, a display, and one command to get going.