manifest.json reference
{
"schema": 1,
"id": "com.anakatech.example.crypto",
"name": "Crypto Tracker",
"version": "1.2.0",
"author": "Your Name",
"license": "MIT",
"description": "Live BTC/ETH tiles with configurable pairs.",
"permissions": ["network.fetch", "storage.local", "voice.register"],
"widget": {
"entry": "dist/widget.js",
"defaultRegion": "top-right",
"minWidth": 2,
"minHeight": 2
},
"settings": {
"schema": "./settings.schema.json"
},
"voice": {
"intents": ["crypto.price", "crypto.alert"]
},
"python": {
"entry": "python/service.py",
"optional": true
},
"marketplace": {
"tags": ["finance", "dashboard"],
"homepage": "https://example.com",
"donate": "https://ko-fi.com/example"
}
}Field reference
| Field | Required | Description |
|---|---|---|
schema | yes | Manifest format version understood by core |
id | yes | Reverse-DNS unique id |
name | yes | Human title |
version | yes | Semver string |
permissions | yes | Capability tokens (see APIs) |
widget.entry | yes* | JS bundle path *unless headless service-only addon |
settings.schema | no | JSON Schema for addon settings form |
voice.intents | no | Declares handled Piper intents |
python | no | Sidecar interpreter launch config |
⚠️ Warning: Changing id after release forks user settings — treat it as immutable forever.
Last updated on
Was this helpful?