appxi.json
appxi.json describes your package. Generate it from a build and commit it:
Terminal
npx appxi package dist/MyApp-1.2.0.dmg --app my-appappxi package fills in the facts it can read from the package and keeps the requirements and licensing blocks you wrote.
Example
JSON
{
"schema": "appxi.package/1",
"app_id": "my-app",
"name": "My App",
"version": "1.2.0",
"platform": "macos",
"format": "dmg",
"architectures": ["arm64", "x86_64"],
"min_os": "13.0",
"bundle_id": "com.example.myapp",
"signing": { "team_id": "ABCDE12345", "certificate_name": "Developer ID Application: Example Inc (ABCDE12345)" },
"product_type": "app",
"install": { "method": "dmg", "silent": true },
"requirements": {
"network": { "mode": "optional", "domains": ["api.example.com"] },
"account": "none",
"permissions": ["microphone"],
"background": [],
"runtimes": [],
"data_collection": []
},
"updates": { "framework": "sparkle", "feed": "appxi", "channel": "stable", "ed_public_key": "…" },
"licensing": { "mode": "none" }
}Fields
| Field | Meaning |
|---|---|
app_id | Your app's AppsXi slug. |
product_type | app, game, audio_plugin, extension or cli. It decides which install and launch tests run. |
requirements.network.mode | none, optional or required; list the domains the app talks to. |
requirements.account | none, optional or required: whether people need an account with you. |
requirements.permissions | Camera, microphone, screen recording, accessibility, full disk access, location, contacts and so on. |
requirements.background | Login items, launch agents, services. |
requirements.runtimes | Anything people must install first (.NET, Java, a driver). |
requirements.data_collection | What the app sends to you (analytics, crash reports). |
updates.framework | sparkle, electron_updater, winsparkle, app_installer or none. |
updates.channel | stable or beta. |
licensing.mode | none (free or Level 0), license_key (Level 1) or appxi_sdk (Level 2, Sign in with AppsXi, coming later). |
The listing shows the requirements to buyers. When the pipeline sees something the manifest does not declare, such as a launch agent or a permission, the build goes to a person.