miniapp.json at its root. It declares who the miniapp is,
where its two layers are built to, what permissions it needs, and what hardware
it requires. The CLI validates it on every dev, pack, and release: bad
values fail on your laptop, not on the phone.
miniapp.json
Fields
Required:packageName, version, name, hardwareRequirements. Everything
else is optional.
The
$schema line points editors at the JSON Schema shipped with the CLI, so you
get autocomplete and validation as you type. create-mentra-miniapp adds it for
you; you can also print the schema with mentra-miniapp schema print.
Permissions
Each entry is{ "type": "...", "description": "..." }. The optional description
is shown to the user in the OS permission prompt.
Declaring a permission is not the same as the user granting it.
session.permissions.has(type) reports what you declared in the manifest, not
the live OS grant. If the user denied the OS prompt, your subscriptions simply
receive nothing. See Permissions.Hardware requirements
Each entry is{ "type": "...", "level": "...", "description"?: "..." }.
REQUIRED: glasses without this hardware can’t install the miniapp (it’s hidden in the Mentra Miniapp Store and launcher on incompatible devices).OPTIONAL: incompatible glasses still run the miniapp, in a degraded state.
Editing the manifest
You can editminiapp.json by hand, or use the CLI’s guided commands:

