manifest.yaml beside your app’s single top-level .star file. These are
YAML keys, which do not always have the same names as CLI flags.
Required fields
The name and summary limits include spaces. Exactly 32 bytes is allowed.
ASCII characters each use one byte; accented characters and emoji may use more.
Older CLI error messages say “less than 32 characters”; the actual validation
is a maximum of 32 UTF-8 bytes.
Optional fields
An App ID identifies a project. A revision ID identifies one immutable upload.
A device ID identifies a display. An installation ID identifies one copy
in its rotation. See CLI commands for discovering and using them.
Credentials
id must match a secret text field in the app’s configuration schema.
owner is publisher or user; provider is a nonempty provider identifier.
required defaults to false. IDs must be unique within the declaration list.
Store publisher values with niblet apps secrets set api_key. Users supply
user-owned values through their installation settings. Never put secret values
in manifest.yaml or source code.
URLs supplied through settings
This manifest field is available with CLI v0.54.10 and the current hosted service.
feed_url as a non-secret text field in get_schema(). Its configured
value must be an HTTPS URL on port 443 with a DNS hostname and no username or
password. IP literals are rejected. Private and reserved addresses, including
addresses reached through DNS or redirects, remain blocked by the egress proxy.
Declare static redirect destinations separately in network_hosts.
Static hosts and URL fields share a limit of 64 declarations. Network permission
is frozen per uploaded revision. Private apps do not need human review to use
these permissions. Never put credentials in an ordinary URL setting; use the
credential fields instead.