FrameOS

FAQ

Frequently asked questions about FrameOS.

Do I need an account or a cloud?

No. A standalone frame needs nothing but an SD card, and the self-hosted backend is a web app you host. Frames run entirely on-device once deployed: shut the backend down and they keep rendering, keep their schedules, and stay controllable over their local HTTP API.

There is a cloud if you want one: FrameOS Cloud manages frames from a browser with nothing to host, and is free while in beta. It is deliberately limited - no shell on your frame, no compiled code, only sandboxed interpreted scenes - and a cloud-managed frame keeps working when the cloud is unreachable. Self-hosting is not going anywhere - in fact, the entire cloud is AGPL too, and you can self-host it as well.

Can I switch between standalone, self-hosted and cloud?

Yes, without reflashing. A frame is managed by one of them at a time: Adopt frame in the backend takes over a standalone frame, the link code on a frame's display claims it for the cloud, and Disconnect on the frame's admin page (or deleting it in the cloud) makes it standalone again, scenes intact. See Moving between cloud, backend and standalone.

Can I run this on an ESP32?

Yes, and it's a full frame rather than a demo. FrameOS runs on the ESP32-S3: the backend builds a firmware image, you flash it from the browser, and the device renders scenes itself - the same interpreter as Linux frames, the same apps, JavaScript on QuickJS, its own scheduler, assets on an SD card, logs and metrics back to the backend, and firmware updates over the air with automatic rollback. It deep-sleeps between refreshes, so battery-powered frames are real.

The short list of what a microcontroller frame can't do: Waveshare-family SPI e-paper only (no HDMI, no LCD, no Pimoroni HATs), no custom Nim apps (JavaScript instead), one built-in font plus TTFs off the SD card but no emoji fallback, and no headless Chromium screenshots or RTSP camera snapshots. The full picture is on the ESP32 page.

The Raspberry Pi is still the broadest platform - 120+ panels, HDMI at 60 FPS, custom Nim, any font you upload. Pick the Pi if you want everything; pick the ESP32 if you want a wire-free frame, or if you already own one of the all-in-one boards like a Waveshare PhotoPainter, a TRMNL or a Seeed reTerminal.

Can it really render a huge photo on a microcontroller?

Yes. Point a frame at a 4000×3000 photo and it shows it, on a board with 8 MB of RAM. The decoder scales while it decodes, straight into the panel-sized canvas, so the full-size image never exists; downloads too big to hold at all spool to the SD card and stream from there. No proxy, no resize server, no ?width= parameters. See Big images on small devices.

Can I run a frame with no hardware?

Yes - a virtual frame is rendered by the backend and served as an image URL and a self-refreshing kiosk page. Point an old tablet, a browser or a signage player at it and you have a frame with nothing installed on the device. It's also the fastest way to try FrameOS while you wait for a panel to arrive.

Can the backend and the frame run on the same Raspberry Pi?

Yes, on a Pi 4/5 with some patience. Install the backend via the release tarballs or Docker on the Pi, then add the frame with localhost as its address. For e-ink frames a more common setup is: run the backend on your laptop only when you want to change something - the frame doesn't need it day to day.

What happens when my WiFi or internet goes down?

The frame keeps rendering whatever its scenes can produce locally. Apps that fetch remote data serve their cached values. The control page on port 8787 keeps working as long as you can reach the frame on the network. When connectivity returns, everything catches up on the next render.

How fast can it render?

On a Raspberry Pi 5 over HDMI: up to 60 frames per second. On e-ink, the panel itself is the bottleneck - color e-ink takes ~15-30 seconds per refresh, monochrome panels a second or two. FrameOS only refreshes the physical display when the rendered image actually changed, so e-ink panels don't flash needlessly.

Can I show my own photos?

Yes, several ways. Upload images to the frame's Assets (or drop them on its SD card) and use the Local image app - point it at a folder and it plays the folder. Pull from Immich or Google Photos. Point the Image from URL app at any address. Or use the gallery apps: FrameOS Gallery, Unsplash, Wikimedia Commons, OpenAI image generation.

You don't need to resize anything first - see Big images on small devices.

Does it integrate with Home Assistant?

Three ways: the backend runs as a Home Assistant add-on; the HA Sensor app pulls any Home Assistant entity into a scene; and HA automations can drive frames through the HTTP API - change text, switch scenes, trigger renders.

How do I share scenes or apps I made?

Publish them on the scene store: fork, edit and preview in the browser, keep them private or make them public, and anyone can install them on a cloud-managed frame with one click or on a self-hosted backend by pasting a link. Scenes also export as JSON (and as ZIP templates with preview images) you can share anywhere. The community hangs out on Discord - show off your builds, get help, and propose contributions. Code lives at github.com/FrameOS/frameos; PRs welcome.

What does it cost?

FrameOS is free and open source (AGPL-3.0). A complete frame is roughly the price of the panel plus ~$20 of Pi: a 7.5" black/white build lands around $80, a 13.3" Spectra 6 color build around $250.

What does FrameOS Cloud cost?

Nothing while in beta, with fixed limits (50 frames, 20 scenes per frame, 100 MB each of private scenes, backups and logs) so one account can't crowd out the rest. Creating an account, enrolling and managing frames, and installing public store scenes are meant to stay free; nothing security-related will ever be paywalled. See FrameOS Cloud.

On this page