Your digital art frame isn't dead.
LAGO raised $4.2M, built a beautiful 1920x1920 display, and got acquired by MetaSill. The app was delisted. The website went dark. Thousands of frames became expensive wall decorations overnight.
TokenFrame: same story. Meural is one Netgear decision away from the same fate. Every luxury digital art frame is one acquisition away from becoming e-waste.
re-frame is an open-source toolkit that brings them back to life. It works with any Android-based frame or tablet. No cloud dependency. No subscription. No company to go out of business.
Most "smart" digital art frames are just Android tablets in a nice enclosure. When the company dies and the app gets delisted, the frame boots to a dead launcher. But Android is still running underneath. re-frame uses ADB (Android Debug Bridge) to bypass the dead software, install a kiosk browser, and point it at a local gallery page that displays your art.
The whole process takes about 15 minutes. You can do it manually or let an AI coding tool (like Claude Code) walk you through it using this repo as context.
You'll need a few things set up before running the revival scripts.
- ADB installed. This is how your computer talks to the frame.
- macOS:
brew install android-platform-tools - Linux:
sudo apt install adb - Windows: Download from Google
- macOS:
- Python 3. Already installed on most systems. Check with
python3 --version. - scrcpy (optional). Mirrors the frame's screen on your computer during setup. Very helpful for navigating Android UI on a wall-mounted display. Install:
brew install scrcpy(macOS) or see scrcpy repo.
These steps happen on the frame itself (use a USB mouse or scrcpy to navigate):
-
Escape the dead launcher. Most bricked frames still respond to touch. Look for a Settings gear, swipe from edges, or long-press to access Android's home screen. Every frame is different. Check your device profile in
devices/for specific instructions. -
Connect to WiFi. The frame and your computer must be on the same network. Go to Settings > WiFi and connect.
-
Enable Developer Options. Go to Settings > About (or About Device/Tablet). Tap "Build Number" 7 times. You'll see a toast message: "You are now a developer."
-
Enable USB Debugging and Wireless Debugging. Go to Settings > Developer Options. Turn on "USB Debugging." If available, also turn on "Wireless Debugging" (Android 11+). This lets ADB connect over WiFi without a USB cable.
-
Assign a static IP (recommended). Log into your router and assign a DHCP reservation for the frame's MAC address. This way the frame always gets the same IP, so your scripts and bookmarks don't break after a reboot. Find the MAC under Settings > About > WiFi MAC Address.
re-frame uses Fully Kiosk Browser to display the gallery in a locked-down, chromeless fullscreen view. It costs about 8 EUR (one-time) for the Plus license. The free version works but shows a watermark.
The revive.sh script can install the APK for you via ADB. Download the APK from fully-kiosk.com and have the file path ready.
Alternatives: WallPanel (free, open source) works too. Any browser that supports kiosk mode and auto-start will do the job.
Once the prerequisites above are done:
-
Clone the repo:
git clone https://github.com/jordanlyall/re-frame.git cd re-frame -
Copy the config:
cp config.example.json config.json
-
Revive your frame (or skip this step if your frame is already network-accessible):
./scripts/revive.sh lago-genesis
-
Add art. Two options:
Local mode: Drop images into
gallery/assets/, then run:python3 scripts/generate-manifest.py
Wallet mode: Edit
config.jsonwith your wallet address and Alchemy API key, then run:python3 scripts/fetch-wallet.py
-
Serve the gallery and point your frame's browser at it:
cd gallery && python3 -m http.server 8080
Then open
http://<your-ip>:8080on the frame.
| Device | Display | Status | Profile |
|---|---|---|---|
| LAGO Genesis | 1920x1920 | Defunct | lago-genesis.json |
Your frame not listed? Add it or open an issue.
The gallery runs entirely in the browser. No server required beyond a basic file server.
Local mode serves images from gallery/assets/. Run generate-manifest.py any time you add or remove files and the gallery picks up the changes on next load.
Wallet mode fetches NFT metadata from your wallet using the Alchemy API. Tokens are cached locally so the gallery works offline after the first fetch.
Three themes are included:
- dark: High contrast, minimal UI. Black background, white text. Built for dimly lit rooms.
- museum: Off-white background with generous margins. Treats every piece like it belongs on a wall.
- minimal: No labels, no chrome. Just the art, full screen.
To change themes, set "theme" in config.json.
The frame dims automatically when your webcam turns on and returns to full brightness when it turns off. Useful if your frame is visible on video calls and you'd rather not have it compete with your face.
To run it:
python3 scripts/camera-watch.pymacOS only for now. The script uses the system camera indicator to detect active sessions.
See CONTRIBUTING.md for the full guide. The easiest contribution is adding a device profile: copy the JSON template from devices/README.md, fill in what you know, and open a pull request. Partial info is better than no info.
Photos of revived frames in the wild live in docs/gallery/. Show us your frame.
MIT. See LICENSE.
