appuploader-cli Command Line Tool

appuploader-cli is a command-line tool distributed with the AppUploader main application. It allows you to upload a signed IPA/PKG package to App Store Connect without relying on Xcode (or macOS), or to analyze an IPA locally and generate the resource description file required by App Store. In terms of functionality, it is equivalent to the ‘Submit to App Store’ button on the ‘File & Submit’ page — if you prefer working in a terminal or want to integrate the upload step into your own CI/CD pipeline, you can use it directly.

Using the upload / info commands requires that the Apple ID you use has been authorized at appuploader.net. Unauthorized or expired accounts will receive a license failed / license expired error and cannot use the tool. You can view and activate your ‘AppUploader License’ in the ‘Account Overview’ page.

Where to Find It

appuploader-cli is bundled with the main application and is located in the runtime/ directory under the installation directory (file names differ slightly by platform):

  • macOS: runtime/darwin/appuploader-cli
  • Windows: runtime/windows/appuploader-cli.exe

To use it directly from your system terminal, either cd into that directory and run it, or add that directory to your shell’s PATH.

There is also an appuploader-adi in the same directory. Do not confuse it with appuploader-cli—it serves a different purpose and is not meant for manual invocation.

upload — Upload to App Store Connect

appuploader upload -f <IPA/PKG path> -u <Apple ID> -p <app-specific password> [--type ios]
Parameter Description
-f, --file Path to the IPA/PKG file to upload (required).
-u, --username Your Apple ID email (required).
-p, --password The app-specific password in the format xxxx-xxxx-xxxx-xxxx (required; not your Apple ID login password; see ‘File & Submit’ for how to generate one).
--type Package type: ios | osx | appletvos | xros. Default is ios.

Example:

1appuploader upload -f Payload.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop

Progress and result logs are printed in real time during the upload. If an upload fails, the log contains specific reasons, such as a duplicate package, version number conflict, or signature mismatch.

info — Generate App Store Resource Description File

This command does not upload; it only analyzes IPA/PKG/ZIP packages locally and generates the AppStoreInfo.plist resource description file required for App Store delivery. It also does not require Xcode, which makes it suitable for validating the package contents in CI in advance, or when you need this plist for other upload tools.

appuploader info -u <Apple ID> <file path> [-o output file] [--format xml|binary]
Parameter Description
-u, --username Apple ID email registered and authorized at appuploader.net (required).
-f, --file The file path; can also be passed as a positional argument.
-o, --output Write to the specified file; if omitted, output to stdout.
--format Output format: xml (default) or binary.
--deterministic Fix fields that would otherwise vary (UUID, PID, timestamp, etc.) so the output can be compared byte-by-byte (for testing/CI).

Example:

1appuploader info -u dev@example.com Payload.ipa -o AppStoreInfo.plist

Other Commands

  • appuploader help [command] — Show help for a specific command. Equivalent to adding --help.
  • appuploader completion [bash|zsh|fish|powershell] — Generate a shell completion script for the specified shell. You can ignore this in daily use.

FAQ

  • license failed / license expired: The Apple ID has not been authorized on appuploader.net, or the authorization has expired. Go to ‘Account Overview’ and activate or renew the ‘AppUploader License’.
  • App-specific password error: The -p option expects an Apple-generated app-specific password in the format xxxx-xxxx-xxxx-xxxx, not your login password. See ‘File & Submit’ for instructions on generating one.
  • Prefer a GUI: The capabilities of the two commands above correspond to the ‘Submit to App Store’ button on the ‘File & Submit’ page (for upload). The info command currently has no GUI entry and is only available through the command line.