appdrop-cli
v2.0.1
Published
Upload and manage AppDrop mobile builds from the command line
Maintainers
Readme
appdrop-cli
Command-line interface for AppDrop - upload .ipa and .apk builds and get shareable install links directly from your terminal or CI pipeline.
appdrop upload build/MyApp.ipa
appdrop upload build/MyApp.apk --name "Nightly" --notes "CI build"
appdrop list
appdrop stats --build latestInstall
npm install -g appdrop-cliRequires Node.js 18 or later.
Quick start
1. Configure your credentials
appdrop config --url https://api.appdrop.sh
appdrop config --token appdrop_your_api_tokenOr set environment variables (preferred for CI):
export APPDROP_URL="https://api.appdrop.sh"
export APPDROP_TOKEN="appdrop_your_api_token"Get your API token from appdrop.sh/settings.
2. Upload a build
appdrop upload build/MyApp.ipa✓ Authenticated
✓ Upload complete
✓ Build ID: 3a1b2c3d-4e5f-6789-abcd-ef0123456789
✓ Install link: https://appdrop.sh/install/aB3cD4eF
✓ Platform: ios
✓ Expires: 2 May 2026Configuration
Config is read from environment variables first, then ~/.appdrop/config.json.
| Source | Variable | Description |
|--------|----------|-------------|
| Env / Config | APPDROP_URL | AppDrop API URL |
| Env / Config | APPDROP_TOKEN | API token (starts with appdrop_) |
| Config only | project | Default project name for uploads |
# Set config values
appdrop config --url https://api.appdrop.sh
appdrop config --token appdrop_abc123
appdrop config --project myapp
# View current config
appdrop config
# View as JSON
appdrop config --jsonFor CI/CD, use environment variables. Store them as repository secrets.
Commands
appdrop upload <file>
Stream-uploads a .ipa or .apk to AppDrop and prints a shareable install link.
appdrop upload build/MyApp.ipa
appdrop upload build/MyApp.ipa --name "Nightly" --notes "Build #142 - Fix login bug"
appdrop upload build/MyApp.apk --notify "[email protected],[email protected]" --expiry 30
appdrop upload build/MyApp.ipa --json| Option | Default | Description |
|--------|---------|-------------|
| -n, --name <name> | filename | Display name shown on the install page |
| -p, --project <name> | config default | Project name to group this build under |
| -e, --expiry <days> | 7 | Days until the install link expires |
| --notes <text> | - | Release notes shown to testers |
| --password <pw> | - | Password required to access the install page |
| --max-installs <n> | 200 | Maximum number of tracked installs |
| --notify <emails> | - | Comma-separated emails to notify after upload |
| --json | - | Output result as JSON (for CI scripting) |
JSON output (use with jq in CI):
LINK=$(appdrop upload app.ipa --json | jq -r '.install_link')Exit codes: 0 = success, 1 = error (upload failed, auth failed, etc.)
appdrop list
Lists your uploaded builds, newest first.
appdrop list
appdrop list --limit 10
appdrop list --json| Option | Description |
|--------|-------------|
| --json | Output raw JSON instead of a table |
| -l, --limit <n> | Maximum number of builds to return (default: 50) |
appdrop stats
Show install statistics for a specific build or all your builds.
appdrop stats # Overview of all builds
appdrop stats --build latest # Stats for the most recent build
appdrop stats --build 3a1b2c3d-... # Stats for a specific build
appdrop stats --json # JSON output for scripting| Option | Description |
|--------|-------------|
| -b, --build <id> | Build ID or latest |
| --json | Output raw JSON |
| -l, --limit <n> | Max builds to include (default: 50) |
appdrop delete <id>
Deletes a build by ID - removes the install link and the build file from storage. This cannot be undone.
appdrop delete 3a1b2c3d-4e5f-6789-abcd-ef0123456789
appdrop delete 3a1b2c3d-... --force| Option | Description |
|--------|-------------|
| -f, --force | Skip the confirmation prompt (required in CI / non-TTY) |
appdrop config
View or update CLI configuration stored in ~/.appdrop/config.json.
appdrop config # Show current config
appdrop config --token appdrop_abc123 # Set API token
appdrop config --url https://... # Set API URL
appdrop config --project myapp # Set default project
appdrop config --json # Show config as JSONCI/CD integration
GitHub Actions
- name: Upload build to AppDrop
env:
APPDROP_URL: ${{ secrets.APPDROP_URL }}
APPDROP_TOKEN: ${{ secrets.APPDROP_TOKEN }}
run: npx appdrop-cli upload MyApp.ipaCapture the install link as a step output:
- name: Upload and capture link
id: appdrop
run: |
LINK=$(npx appdrop-cli upload app.ipa --json | jq -r '.install_link')
echo "link=$LINK" >> $GITHUB_OUTPUT
env:
APPDROP_URL: ${{ secrets.APPDROP_URL }}
APPDROP_TOKEN: ${{ secrets.APPDROP_TOKEN }}
- name: Post link to PR comment
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `Install build: ${{ steps.appdrop.outputs.link }}`
})Shell / Jenkins
export APPDROP_URL="https://api.appdrop.sh"
export APPDROP_TOKEN="appdrop_..."
npx appdrop-cli upload MyApp.apk --name "Nightly" --notes "CI build"Fastlane
lane :beta do
gym(scheme: "MyApp")
sh "npx appdrop-cli upload #{lane_context[SharedValues::IPA_OUTPUT_PATH]} " \
"--name MyApp --notes 'Fastlane build' --notify '[email protected]'"
endLicense
Proprietary
