Packaging & Maple Market
Maple Market now supports two install formats for developers: a stable self-contained HTML bundle and a package-based .mpak flow for multi-file web apps and packaged WASM modules.
HTML bundles are still the simplest option when everything can live in one file. If your app needs multiple files or a packaged WASM entry, upload a ZIP renamed to .mpak with a root manifest.
In both cases, users still get the same MapleOS experience: Download → install into VFS → open now. No restart should be required.
Current install behavior
.mpak installs are unpacked, validated, and launched automatically based on the manifest type.Upload today
Upload one self-contained HTML file for single-file apps, or upload one .mpak package for multi-file web/JS and WASM apps.
WASM today
Inline WASM still works inside a single HTML bundle, and packaged WASM modules now use manifest.entry.wasm inside .mpak uploads.
Required manifest
Every .mpak must include a root manifest.json with name, version, type, loader, and entry.
Install experience
Download writes files into VFS, dispatches a file-system update, and hot-loads the app without restart.
Which file should I upload?
Pick the format that matches how your app is built.
Single-file HTML bundle
- • Upload one
index.htmlfile. - • Inline CSS, JS, images, fonts, and icons.
- • If you use WASM here, embed the compiled bytes directly into the HTML.
- • Maple Market generates the install manifest for this format.
.mpak package
- • Zip your app, rename it to
.mpak, and upload that file. - • Put
manifest.jsonat the package root. - • Use it for multi-file web/JS apps and packaged WASM modules.
- • MapleOS unpacks the files and launches by manifest type.
Web HTML bundle
Supported nowBest for self-contained apps that can ship in one HTML file.
HTML bundle with inline WASM
Supported nowUse this when you want a single-file web app but still need WASM.
.mpak package
Supported nowUse this for multi-file web/JS apps or packaged WASM modules with a root manifest.
Manifest basics
MapleOS apps are manifest-driven. HTML bundles still get an installer-generated manifest. Every .mpak must include its own root manifest.
Installer-generated HTML bundle manifest
{
"type": "web",
"loader": "bundle",
"entry": { "html": "index.html" },
"assets": "vfs://app/"
}Required .mpak web manifest
{
"name": "My Web App",
"version": "1.0.0",
"type": "web",
"loader": "package",
"entry": { "html": "index.html" }
}Required .mpak WASM manifest
{
"name": "My WASM Module",
"version": "1.0.0",
"type": "wasm",
"loader": "package",
"entry": { "wasm": "build/module.wasm" }
}What happens when a user clicks Download?
Both delivery formats preserve the no-restart install/open flow.
- 1. Maple Market resolves a signed URL. MapleOS downloads either HTML text or .mpak archive bytes.
- 2. MapleOS creates a module folder. The install target is
C:\Program Files\Modules\<App Name>. - 3. MapleOS writes app files. HTML bundles write
manifest.jsonandindex.html; .mpak installs unpack all files and preserve their manifest. - 4. The file system announces the change. MapleOS dispatches a file-system update event so the runtime sees the new app immediately.
- 5. The app opens right away.
type: "web"launches the web runtime andtype: "wasm"launches ModuleHost.
How hot-loading works
MapleOS behaves like a hot-loading desktop for marketplace installs. The installer writes into the virtual file system, notifies the system that files changed, and opens the app immediately.
For developers, the expected experience is still: Download → install into VFS → open app now.