Your app, on your users' box. With no one in between.
Publish to every Plum Box with a single signed .plu. Files, identity, and your server backend all run on hardware your users own — no Plum server in the middle.
One script tag. The whole box.
The box serves one shared plum-sdk.js at /apps/runtime/plum-sdk.js — no install, no build step, and every app on a device stays in sync. A drop-in mock lets you develop offline. Read the documentation →
files The user's storage
Read and write the user's own encrypted storage. Scoped by the permissions you declare in the manifest, enforced by the box.
user Identity without accounts
Profile, display name, and avatar come from the box's local identity. No OAuth, no user table to leak.
server A backend inside your app
Ship a Go service in the same .plu. The box runs it sandboxed and proxies it at /apps/<id>/svc.
Four steps, one line each.
Build
Bundle your app and Go server into a single signed .plu.
plum-dev package
Submit
Upload to your namespace. Automated checks run in seconds.
plum-dev publish
Review
A Plum reviewer checks permissions, content, and the server sandbox.
# usually < 48h
Live
Once approved, it appears in the store on every box — one-tap install.
# rollout complete