MMiniOS APPS
Browse apps

BUILD FOR MINIOS

Make a small app
useful on device.

MiniOS apps are WebAssembly packages that use a bounded system API. Build against the SDK, package and sign your app, then install it on a developer device.

Platform status

The app ABI and resource limits are still being validated on hardware. Check your firmware revision and the SDK before release; current acceptance status is tracked in the project documentation.

1. Set up your tools

2. Start from an example

Use Counter or Quick Notes for private storage, Private File Shelf for app-scoped file CRUD, 2048 to see app state and a saved score, Calculator and Base Converter for numeric input, Text Counter and the text utilities for local transformations, Timer or Focus Timer for app-local timers, Unit Converter or Dice Roller for compact utilities, or Weather for bounded HTTPS requests. The text tools cover case changes, ROT13/ROT47, Caesar shifts, slug creation, filtering and whitespace cleanup. The source and SDK are in the MiniOS project repository.

Export app_init; implement app_on_event when the app needs UI, timer, or network events. Import functions from the minios module and request only the capabilities listed in your manifest. Do not call LVGL or ESP-IDF directly.

3. Build and package

From the Counter example directory, build the module and create an unsigned developer bundle:

npm ci
npm run build
npm run package -- pack --manifest manifest.json --wasm ../../fs_image/apps/com.minios.counter/app.wasm --icon ../../fs_image/apps/com.minios.counter/icon.bin --out dist/com.minios.counter.mapp --developer
npm run package -- verify --file dist/com.minios.counter.mapp --allow-developer

Developer bundles require developer firmware and explicit acceptance on the device. For release packages, sign with an Ed25519 key, verify against the configured public key, and keep the private key out of source control. Package limits and manifest rules are defined by the package format.

4. Install over USB

Connect the board over USB Serial/JTAG, install pyserial, and send the package from the example directory. Replace COM7 with your device port.

python ../../tools/mapp-sideload.py COM7 dist/com.minios.counter.mapp

Open Apps on the device and accept the staged package. Use the system Home control to close the foreground app.

5. Keep apps responsive

6. Publish

Build a publisher-signed .mapp, validate it with the matching public key, then use the repository publisher tool to add the package, icon, and catalog entry to the static site. The device catalog accepts at most 12 entries in its current format. See the complete developer workflow and catalog format and publisher instructions.