Contents

Docs / Reference / app.toml

app.toml

The manifest is only for the identity and permissions of an app. Capabilities are declared in code.

Each app folder has an app.toml. When a person installs the app, the person sees the permissions that the manifest asks for.

Example

[app]
name            = "agenda"
title           = "Agenda"
version         = "0.1.0"
description     = "Gets today's and tomorrow's events from your calendar and reminds you before meetings"
command         = "bin/agenda.cwasm"
network         = true
memory_mb       = 64
events          = ["tick"]
pushes_per_hour = 6

Identity

Field What it is
name The app name, used in the log and on cards. All capabilities are named <name>.<action>. It cannot be qing
title The name that people see
version The version number
description A one-line description
command The compiled wasm module, relative to this folder

Permissions

A permission that you do not write is off.

Field Default What it is
network false Use the network. An app with false gets only errors from network calls
location false Know where the device is
mic false Record speech. Recording can start only after the person presses a button of the app
call false Make phone calls. A call can start only after the person presses a button of the app
mcu false Send and receive frames with the MCU. Only one app on a device gets it
lan false Broadcast to the app with the same name on other devices on the local network
listen 0 A port above 1024 where the app waits for connections on the local network. 0 means no
mdns "" An mDNS service that the system announces for the app. Needs listen
memory_mb — The memory limit of the wasm module

Events and rhythm

Field What it is
events The system events that the app receives: tick (each minute), near (a person comes or goes), notice (a device reports something), mute (the mute switch). With no list, the app receives none
pushes_per_hour The limit for cards that the app pushes. Above the limit, the system shows the card but does not read it aloud
rate_hz The system calls the app at this fixed rate, up to 200. 0 means no

Full-screen apps

Apps that use the full screen, such as games, use these fields:

Field What it is
screen "full" makes a full-screen page. Use it with rate_hz = 60
frame The frame format. Not set: 240×160 with 256 colors. "640x480": true color, not scaled by the system
cover The cover on the home screen, a PNG in the app folder

The fastest way to write a full-screen game is the VibePlay SDK.