The scene store
Browse, preview, fork and install community scenes from scenes.frameos.net - on cloud-managed frames with one click, or on a self-hosted backend by pasting a link.
scenes.frameos.net is the FrameOS scene store: calendars, dashboards, galleries, message boards, generative art - published by the community and by the FrameOS project, and installable on any frame.
Each scene page is a small workspace with four panels you can toggle - Info (publisher, install count, the FrameOS version it needs, description and gallery), Editor (the same node-graph scene editor the backend has, so you can read exactly what a scene does before you install it), AI (edit it in plain language) and Preview, a live preview rendered in your browser. A version dropdown in the bar swaps the whole workspace to any published version, and Download .zip hands you the scene as a file.
The preview is the real FrameOS renderer compiled to WebAssembly, and it can show the scene the way a panel would: tick Dither and pick the panel to simulate - Spectra 6, 7-colour ACeP, black/white/red, black/white/yellow, 4 or 16 greys, plain black and white - and the frame is dithered with the device's own algorithm. It has a browser-only assets folder (kept in your browser, seeded with sample photos) so slideshow and SD-card scenes render too, an Auto apply switch that re-renders as you change state fields, and an opt-in real-time mode for scenes that want to animate. JavaScript clocks run in the scene's time zone. A scene that calls a pay-per-request service (OpenAI, say) never renders on its own - it waits for you to click Run preview each time the scene changes, so a browse never spends your credits. Tick Memory limit and pick a device (ESP32 with 8 or 16 MB, Pi Zero, Pi) to render under that frame's memory: the preview shows the peak and says "out of memory" where the frame would.
Install a scene
The Install button opens one dialog with every way in:
- On a cloud-managed frame: sign in, pick the frame and click Install - the scene is added next to the frame's existing scenes and deployed within seconds (or as soon as an offline frame reconnects). The frame remembers where the scene came from and which version it is on. When a newer version is published, the scene's image says Update available - on the cloud, a backend and the frame's own admin page - and Update to latest in its … menu takes it there (2026.9.20+).
- On a self-hosted backend: copy the Install on a self-hosted FrameOS link and paste it into the search box of a frame's Add scene drawer in the backend. You rarely need the link: Add scene → Scene store lists the public store on every backend, linked to a cloud account or not, grouped into the same shelves as the store front.
- On a standalone frame: open Add scene on the frame's admin page - the store is listed there first (FrameOS 2026.9.10+). Download zip and upload still works on older frames.
Installing a store scene on a backend grants it the service keys it declares; revoke them under the frame's settings, Service keys for store scenes.
Scenes that run shell commands on the frame are flagged in the store. A backend warns before installing one; the cloud never pushes them at all - install those from the frame itself, and only from publishers you trust. From 2026.9.11 a frame refuses the Chromium screenshot and RTSP snapshot apps in any store scene until a local admin allows shell apps for store scenes in the frame's settings, confirmed with the code on the panel.
Your scenes
Signed in, the store gets a second tab, My scenes (scenes.frameos.net/my-scenes), with your private scenes first and your public ones below. Everything private is yours alone until you click Make public. Scenes get here five ways:
- New blank scene - an empty scene in the hosted editor.
- Create a scene with AI - describe what you want and the scene assistant builds it as a new private scene.
- Fork any store scene ("Save a copy as a new private scene in your account"), then edit it in the hosted editor.
- Upload a scene ZIP exported from a backend or a frame; the cover image in the zip becomes the scene's preview. A zip holding a legacy compiled scene (Nim code nodes or Nim apps) is refused - run it through the converter first.
- From a linked backend: the Save to cloud (private) item in a scene's … menu pushes it straight to your account, and your private scenes appear under Add scene → Private scenes on every machine you link.
A private scene's install link carries a sharing secret, so you can hand it to a friend without publishing. A version is the whole scene - diagram, description, tags, category and the image gallery - so editing the listing or reordering images shows up as Unsaved changes and lands with the next save. Unsaved edits are kept in your browser: leave a scene page and come back, and the editor restores them with a Discard button next to them. Versions are immutable - Save as new version asks for a one-line "What changed?" that heads the version in the dropdown and on the public page, and you can yank a bad version so new installs skip it. A scene the store has pulled stays readable and deletable by its owner.
Build and edit scenes with AI
Every scene you own has an AI panel (and the store's front page has a Create a scene with AI card). The assistant can't deploy on its own: installing on a frame from the chat is an Approve card you click. Account → AI usage shows what you've used and has a Turn AI off switch. Describe the scene, or the change - "add a theme selector", "make the clock bigger, show the weather for Tallinn" - and the assistant edits the node graph, the JavaScript apps and the state fields, checks the result against a catalog-aware linter and renders it inline before handing it over; you then save it as a new version, with the prompt pre-filled as the change note. Long edits keep running if your connection drops and pick up where they were. The prompt is never stored inside the scene, so the scenes.json you download or publish doesn't carry it. The same assistant is available to scripts and agents through the cloud's MCP server.
Published scenes, private ones included, pass an automated content check on their name, description and preview image. Limits while in beta: 200 scenes per account, 100 MB of private storage (public scenes are free), 8 MB per scene ZIP.
Publishing for others
Make a scene public and it appears in the store under your publisher page. Give it a good preview image (in the Preview panel, Save to images uploads the current render to the scene's gallery; Download PNG hands you the same frame as a file; drag gallery images to reorder them, the first one leads) and a description that says which API keys it needs - it doubles as the summary in the card Discord and Slack unfurl for the scene's link. There are no ratings or comments by design - install counts and the diagram speak for the scene.