{"_id":"@appsonair/appsonair-cli","_rev":"5-356d3ca7951729e3dc326233dfbbd5e6","name":"@appsonair/appsonair-cli","dist-tags":{"beta":"0.0.3-beta","latest":"1.0.1"},"versions":{"0.0.1-beta":{"name":"@appsonair/appsonair-cli","version":"0.0.1-beta","keywords":[],"author":"","license":"ISC","_id":"@appsonair/appsonair-cli@0.0.1-beta","maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"bin":{"appsonair":"dist/appsonair.cjs","appsonair-ota":"dist/appsonair-ota.cjs"},"pkg":{"assets":["node_modules/keytar/build/Release/keytar.node"],"outputPath":"dist/bin"},"dist":{"shasum":"f5792fa7f0cb25d5783e1ee223f8ebee50fb0966","tarball":"https://registry.npmjs.org/@appsonair/appsonair-cli/-/appsonair-cli-0.0.1-beta.tgz","fileCount":6,"integrity":"sha512-hxwIYdg3Vemg8CUfy9tqVF9EUQSxhURzggMmhs0THBSvf47RXYkooC8uxGtQsQsQWl29wfhNMSp+GsrDtdDLXg==","signatures":[{"sig":"MEYCIQDr7eaBiIfk/8TVvXrezGKUub4s0RyiID/NXbhAebohzQIhAN5glLUaBl32BvHTmhqXLeR5B+8uEX3cuF4+JxnDNmZR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":515751},"main":"index.js","type":"module","gitHead":"3e7d63e36be12a1c442301af7361be15573837ea","scripts":{"preinstall":"node scripts/preinstall.js"},"_npmUser":{"name":"lw-devtools","email":"devtools@logicwind.com"},"_npmVersion":"10.8.2","description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"open":"^11.0.0","yaml":"^2.8.3","chalk":"^5.6.2","keytar":"^7.9.0","fs-extra":"^11.3.4","commander":"^14.0.3","graphql-request":"^7.4.0","@inquirer/prompts":"^8.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.3","@yao-pkg/pkg":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/appsonair-cli_0.0.1-beta_1782386888729_0.4281716045824413","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-beta":{"name":"@appsonair/appsonair-cli","version":"0.0.2-beta","keywords":["appsonair","cli","ota","over-the-air","app-distribution","build-distribution","apk","ipa","android","ios","mobile","ci-cd","deployment","flutter","react-native"],"author":"","license":"ISC","_id":"@appsonair/appsonair-cli@0.0.2-beta","maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"bin":{"appsonair":"dist/appsonair.cjs","appsonair-ota":"dist/appsonair-ota.cjs"},"pkg":{"assets":["node_modules/keytar/build/Release/keytar.node"],"outputPath":"dist/bin"},"dist":{"shasum":"36642c7e055bef77d1289af2069b694ba849da69","tarball":"https://registry.npmjs.org/@appsonair/appsonair-cli/-/appsonair-cli-0.0.2-beta.tgz","fileCount":6,"integrity":"sha512-/OlWw6AEc7dleQSWLyb4+ElmugOKxviyHDCGZt4v/VpkWtLFt17l0sWv7rkZfIYjCQKo0adLdnU07Wmg26opGw==","signatures":[{"sig":"MEQCIGb5XXaevISS4x9CgXNCJZpaCTFREH7yAuHvSYPKEmPZAiA8QggBq2yIfbhZyIrCjxQuSBoKYaWf43OrpIt2DAOhGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516012},"main":"index.js","type":"module","gitHead":"d56d3ba0410e952cd550d55adeb90bc1f44b0072","scripts":{"preinstall":"node scripts/preinstall.js"},"_npmUser":{"name":"lw-devtools","email":"devtools@logicwind.com"},"_npmVersion":"10.8.2","description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"open":"^11.0.0","yaml":"^2.8.3","chalk":"^5.6.2","keytar":"^7.9.0","fs-extra":"^11.3.4","commander":"^14.0.3","graphql-request":"^7.4.0","@inquirer/prompts":"^8.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.3","@yao-pkg/pkg":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/appsonair-cli_0.0.2-beta_1782393320280_0.9769196276695451","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-beta":{"name":"@appsonair/appsonair-cli","version":"0.0.3-beta","keywords":["appsonair","cli","ota","over-the-air","app-distribution","build-distribution","apk","ipa","android","ios","mobile","ci-cd","deployment","flutter","react-native"],"author":"","license":"ISC","_id":"@appsonair/appsonair-cli@0.0.3-beta","maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"bin":{"appsonair":"dist/appsonair.cjs","appsonair-ota":"dist/appsonair-ota.cjs"},"pkg":{"assets":["node_modules/keytar/build/Release/keytar.node"],"outputPath":"dist/bin"},"dist":{"shasum":"2c3b6e68daa39010e253d90b569d1f2a58c153b6","tarball":"https://registry.npmjs.org/@appsonair/appsonair-cli/-/appsonair-cli-0.0.3-beta.tgz","fileCount":6,"integrity":"sha512-as8GB+oFmrE0DMq4+5zFyCXc4OCcdM1Y7Xipyi/v9RNvCWAv3tRw+lR+lN4DPh6HTORKsPm20mFqHiBOOJ2eAg==","signatures":[{"sig":"MEQCIFjhyJJ1wacsNPfACYLESXfd0grrf5pH8Bxp9MFeJU9mAiBFuwtSFKsSOk5GcPOo7+d5daddvUGESi2wlYOl+BiG1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516051},"main":"index.js","type":"module","gitHead":"0cecc61364cd703fa7368292d1a076cc2f4ce04f","scripts":{"preinstall":"node scripts/preinstall.js"},"_npmUser":{"name":"lw-devtools","email":"devtools@logicwind.com"},"_npmVersion":"10.8.2","description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"open":"^11.0.0","yaml":"^2.8.3","chalk":"^5.6.2","keytar":"^7.9.0","fs-extra":"^11.3.4","commander":"^14.0.3","graphql-request":"^7.4.0","@inquirer/prompts":"^8.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.3","@yao-pkg/pkg":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/appsonair-cli_0.0.3-beta_1782394494381_0.5304872929405564","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@appsonair/appsonair-cli","version":"1.0.0","keywords":["appsonair","cli","ota","over-the-air","app-distribution","build-distribution","apk","ipa","android","ios","mobile","ci-cd","deployment","flutter","react-native"],"author":"","license":"SEE LICENSE IN LICENSE","_id":"@appsonair/appsonair-cli@1.0.0","maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"bin":{"appsonair":"dist/appsonair.cjs","appsonair-ota":"dist/appsonair-ota.cjs"},"pkg":{"assets":["node_modules/keytar/build/Release/keytar.node"],"outputPath":"dist/bin"},"dist":{"shasum":"6c07c50d8405300fbc75a81c0141aee4e32cb2fb","tarball":"https://registry.npmjs.org/@appsonair/appsonair-cli/-/appsonair-cli-1.0.0.tgz","fileCount":5,"integrity":"sha512-Uq7gO7YfVCq6eT5d4+iHhQpzfneWS/ti+Il+z2gGQb2CGhhm7pBCL5H5VMdl9RyWPFLjlYIyVZoLrpqy4I+0wg==","signatures":[{"sig":"MEQCIDNnpv/nw8YalwgJpRuJ113nSrtg3gnpKycicjUzGqFOAiAktPYHpbzm/CLGSGJSz11eFyxQPvRqg7uv+yAWmhVrEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":511243},"main":"index.js","type":"module","gitHead":"82905563b99fc9fcfbd70eda03632607f846ad3e","_npmUser":{"name":"lw-devtools","email":"devtools@logicwind.com"},"_npmVersion":"10.8.2","description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"open":"^11.0.0","yaml":"^2.8.3","chalk":"^5.6.2","commander":"^14.0.3","@inquirer/prompts":"^8.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.3","@yao-pkg/pkg":"^6.17.0"},"optionalDependencies":{"keytar":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/appsonair-cli_1.0.0_1785489253216_0.883979055761605","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@appsonair/appsonair-cli","version":"1.0.1","description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","main":"index.js","pkg":{"assets":["node_modules/keytar/build/Release/keytar.node"],"outputPath":"dist/bin"},"keywords":["appsonair","cli","ota","over-the-air","app-distribution","build-distribution","apk","ipa","android","ios","mobile","ci-cd","deployment","flutter","react-native"],"author":"","license":"SEE LICENSE IN LICENSE","type":"module","dependencies":{"@inquirer/prompts":"^8.3.2","chalk":"^5.6.2","commander":"^14.0.3","open":"^11.0.0","yaml":"^2.8.3"},"optionalDependencies":{"keytar":"^7.9.0"},"bin":{"appsonair":"dist/appsonair.cjs","appsonair-ota":"dist/appsonair-ota.cjs"},"devDependencies":{"@types/node":"^25.9.3","@yao-pkg/pkg":"^6.17.0","esbuild":"^0.28.0","tsx":"^4.22.4","typescript":"^6.0.3"},"_id":"@appsonair/appsonair-cli@1.0.1","gitHead":"b8136c5a353287925de27a4321cd2a0515653ac6","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-oysQIL9WtNlFzSF1Rp5BA8U3Xc3nUYoZRERNyGA+u9WKAOfuBXqDEBC8fT3gdQjqxLahc4dP5o0JA1lyxOVdbQ==","shasum":"9357f896c38ad39354ffd8db6010420525eefc95","tarball":"https://registry.npmjs.org/@appsonair/appsonair-cli/-/appsonair-cli-1.0.1.tgz","fileCount":5,"unpackedSize":511927,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxdyi5zL7DnY/TfLekyMmt2XwgwhwE48ITcLUNOTzJxwIgBWvX90NSFMfMfQ3nR9EiYQU350KL3dFDAf/Q6nJ5+UU="}]},"_npmUser":{"name":"lw-devtools","email":"devtools@logicwind.com"},"directories":{},"maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/appsonair-cli_1.0.1_1785585427567_0.8938626653601223"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T11:28:08.531Z","modified":"2026-08-01T11:57:07.922Z","0.0.1-beta":"2026-06-25T11:28:08.900Z","0.0.2-beta":"2026-06-25T13:15:20.488Z","0.0.3-beta":"2026-06-25T13:34:54.575Z","1.0.0":"2026-07-31T09:14:13.405Z","1.0.1":"2026-08-01T11:57:07.744Z"},"license":"SEE LICENSE IN LICENSE","keywords":["appsonair","cli","ota","over-the-air","app-distribution","build-distribution","apk","ipa","android","ios","mobile","ci-cd","deployment","flutter","react-native"],"description":"A command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.","maintainers":[{"name":"lw-devtools","email":"devtools@logicwind.com"},{"name":"bhavesh-lw","email":"bhavesh@logicwind.com"}],"readme":"# AppsOnAir CLI\n\nA command-line tool for managing AppsOnAir OTA (Over-the-Air) updates and CI/CD integrations.\n\n\n## Usage\n\nRun the `appsonair` command to see the available commands and options:\n\n![AppsOnAir CLI](https://documentation.appsonair.com/assets/images/appsonair-cli-9bf5075a0baaef076a326261bd2651b1.png)\n\n📖 Full documentation: [AppsOnAir CLI](https://documentation.appsonair.com/MobileQuickstart/CLI/overview)\n\n## Tech Stack\n\n- **NPM:** 11.6.2\n- **Runtime:** Node.js (ESM)\n- **CLI Framework:** [Commander.js](https://github.com/tj/commander.js)\n- **API:** GraphQL via `graphql-request`\n- **Auth Storage:** `keytar` (OS keychain — all user data stored securely)\n- **UI:** `chalk` + `@inquirer/prompts`\n\n\n## Setup\n\nInstall globally — this puts the `appsonair` command on your PATH:\n\n```bash\nnpm install -g @appsonair/appsonair-cli\n```\n\n## Commands\n\nThe toolset ships as two binaries that share one login (token stored in the OS\nkeychain):\n\n- **`appsonair`** — auth, project setup + system commands (`login`, `logout`, `whoami`, `init <service>`, `system-info`, `uninstall`)\n- **`appsonair-ota`** — OTA build upload (`upload`)\n\nSetup runs through `appsonair init <service>`; each service's actions live on its\nown `appsonair-<service>` binary (`appsonair-ota` today).\n\n### Auth (`appsonair`)\n```bash\nappsonair login       # Login via browser and save token locally\nappsonair logout      # Logout and clear local token\nappsonair whoami      # Show current logged-in user\n```\n\n### OTA (`appsonair-ota`)\n\n> Log in once with `appsonair login`; all commands reuse that session.\n\n**yaml mode** — reads paths from `.appsonair-cli.yaml` (run from project root):\n```bash\nappsonair init ota                                         # initialize config\nappsonair-ota upload                                       # upload both android + ios\nappsonair-ota upload --android                             # android only\nappsonair-ota upload --ios                                 # ios only\n```\n\n**path mode** — direct upload from anywhere, selects workspace + app interactively:\n```bash\nappsonair-ota upload --path build/app.apk                 # auto detect APK → android\nappsonair-ota upload --path build/app.ipa                 # auto detect IPA → ios\nappsonair-ota upload --android-path build/app.apk         # android only, strict APK validation\nappsonair-ota upload --ios-path build/app.ipa             # ios only, strict IPA validation\nappsonair-ota upload --android-path build/app.apk --ios-path build/app.ipa  # both in one command\n```\n\n> Folder paths also work — picks the newest APK/IPA by modified time:\n> ```bash\n> appsonair-ota upload --android-path build/app/outputs/apk/release/\n> ```\n\n### Config (`.appsonair-cli.yaml`)\n\nTop-level keys (`version`, `workspaceId`, `appId`, `appName`) are shared by every\nproduct area. Each area keeps its own settings under its own block (`ota:` today;\nfuture areas add sibling blocks). Re-running an init merges into this file rather\nthan overwriting it, so your paths and other areas' settings are preserved.\n\n```yaml\nworkspaceId: abc123\nappId: app456\nappName: my-app\n\nota:\n  androidOutput: build/app/outputs/flutter-apk/  # folder or exact file\n  iosOutput: build/ios/ipa/                       # folder or exact file\n```\n\n### System (`appsonair`)\n```bash\nappsonair system-info   # Check system environment and dependencies\nappsonair uninstall     # Remove the CLI and clear all local data\n```\n\n## Platform Support\n\n| Feature | macOS | Linux | Windows |\n|---|---|---|---|\n| `appsonair login` / `logout` / `whoami` | ✓ | ✓ | ✓ |\n| `appsonair init ota` | ✓ | ✓ | ✓ |\n| `appsonair-ota upload` — Android APK | ✓ | ✓ | ✓ |\n| `appsonair-ota upload` — iOS IPA (pre-built file) | ✓ | ✓ | ✓ |\n| iOS build via `iosConfig` in yaml | ✓ | ✗ | ✗ |\n| `appsonair system-info` — Android checks | ✓ | ✓ | ✓ |\n| `appsonair system-info` — iOS checks | ✓ | skipped | skipped |\n\n> **iOS builds** (`xcodebuild`) are macOS-only. On Linux, build your IPA on a Mac\n> and upload it directly:\n> ```bash\n> appsonair-ota upload --ios-path path/to/app.ipa\n> ```\n","readmeFilename":"README.md"}