@onmyway133/asc-cli
v1.0.6
Published
App Store Connect CLI — manage apps, builds, TestFlight, metadata and more from your terminal
Downloads
698
Readme
asc — App Store Connect CLI for AI Agents
A fast, scriptable CLI for App Store Connect built with Bun and TypeScript.
Manage apps, builds, TestFlight, metadata, screenshots, signing, reports, and more from your terminal or CI pipeline.
Install
npm install -g @onmyway133/asc-cliAuthenticate
You'll need an App Store Connect API key — create one here.
# Interactive (prompts for missing values)
asc auth login
# Non-interactive
asc auth login \
--key-id YOUR_KEY_ID \
--issuer-id YOUR_ISSUER_ID \
--private-key ~/Downloads/AuthKey_XXXXXX.p8 \
--name personalThe private key is stored in the macOS Keychain automatically. Use --bypass-keychain to store the file path in ~/.asc/credentials.json instead.
Multiple accounts
# Add profiles
asc auth login --name work --key-id K1 --issuer-id I1 --private-key ~/.asc/work.p8
asc auth login --name client --key-id K2 --issuer-id I2 --private-key ~/.asc/client.p8
# List all profiles
asc auth list
# Switch active profile
asc auth use work # non-interactive
asc auth use # interactive selector
# Use a specific profile for one command
asc apps list --profile client
# Show current profile
asc auth status --validateProfile management
asc auth profile view # view active profile
asc auth profile view work # view specific profile
asc auth profile update --rename koa # rename active profile
asc auth profile update work --rename koa # rename specific profile
asc auth profile update --vendor-number 12345678
asc auth profile delete workEnvironment variables
| Variable | Description |
|----------|-------------|
| ASC_KEY_ID | API Key ID (overrides active profile) |
| ASC_ISSUER_ID | Issuer ID UUID (overrides active profile) |
| ASC_PRIVATE_KEY_PATH | Path to .p8 file (overrides active profile) |
| ASC_PRIVATE_KEY | Inline PEM content (overrides active profile) |
| ASC_PROFILE | Profile name to use (equivalent to --profile) |
| ASC_BYPASS_KEYCHAIN | Set to 1 to skip Keychain storage |
Commands
Apps
asc apps list [--output table|json]
asc apps get <app-id>Builds
asc builds list [--app-id <id>] [--version <v>] [--platform ios|macos|tvos|visionos]
asc builds get <build-id>
asc builds update-beta-notes --build-id <id> --locale en-US --notes "What's new"Versions
asc versions list --app-id <id> [--platform ios]
asc versions create --app-id <id> --version 2.0.0 [--platform ios]
asc versions submit <version-id>TestFlight
asc testflight groups list [--app-id <id>]
asc testflight testers list --group-id <id>
asc testflight testers add --group-id <id> --email [email protected]
asc testflight testers remove --group-id <id> --tester-id <id>Metadata
asc metadata list --version-id <id>
asc metadata update --version-id <id> --locale en-US --whats-new "Bug fixes"
asc metadata update --version-id <id> --locale en-US --description "New description" --keywords "photo,edit"Localizations (per-region metadata)
# List localization IDs for each locale in a version
asc localizations list --version-id <id>
# Update description/keywords/what's new for a specific locale
asc localizations update <localization-id> --description "..." --keywords "photo,edit" --whats-new "..."
asc localizations update <localization-id> --promotional-text "Limited time sale!"
# Create a new locale or delete one
asc localizations create --version-id <id> --locale fr-FR --description "..." --keywords "..."
asc localizations delete <localization-id>Reviews
asc reviews list --app-id <id>
asc reviews get <review-id>
asc reviews respond --review-id <id> --message "Thank you for your feedback!"Pricing
asc pricing schedule get --app-id <id>
asc pricing schedule set --app-id <id> --base-territory USA --price-point-id <id>
# Per-territory pricing (e.g. Big Mac Index / PPP)
asc pricing set-manual --app-id <id> --base-territory USA --prices 'USA:ppId1,GBR:ppId2,EUR:ppId3,AUS:ppId4'
asc pricing points list --app-id <id>
asc pricing points list --app-id <id> --territory GBR
asc pricing territories listIn-App Purchases
asc iap list --app-id <id>
asc iap get <iap-id>
asc iap create --app-id <id> --name "Premium" --product-id "com.example.premium" --type CONSUMABLE
asc iap delete <iap-id>Subscriptions
asc subscriptions groups list --app-id <id>
asc subscriptions groups create --app-id <id> --name "Pro"
asc subscriptions list --group-id <id>
asc subscriptions get <subscription-id>
asc subscriptions create --group-id <id> --name "Monthly" --product-id "com.example.monthly"
asc subscriptions prices list --subscription-id <id>Code Signing
asc signing certificates list
asc signing certificates get <certificate-id>
asc signing certificates revoke <certificate-id>
asc signing devices list
asc signing devices register --name "My iPhone" --udid <udid> --platform IOS
asc signing bundle-ids list
asc signing bundle-ids register --identifier "com.example.app" --name "My App" --platform IOS
asc signing profiles list
asc signing profiles delete <profile-id>Reports
asc reports sales --vendor-number 12345678 --frequency DAILY --date 2024-03-01
asc reports finance --vendor-number 12345678 --region US --date 2024-03
asc reports analytics list --app-id <id>
asc reports analytics request --app-id <id>Xcode Cloud
asc xcode-cloud products list --app-id <id>
asc xcode-cloud workflows list --product-id <id>
asc xcode-cloud workflows get <workflow-id>
asc xcode-cloud builds list --product-id <id>
asc xcode-cloud builds run --workflow-id <id>
asc xcode-cloud artifacts list --build-id <id>
asc xcode-cloud test-results list --build-id <id>Game Center
asc game-center achievements list --app-id <id>
asc game-center achievements get <achievement-id>
asc game-center leaderboards list --app-id <id>
asc game-center leaderboard-sets list --app-id <id>Beta Review
asc beta-review submit --build-id <id>
asc beta-review status <submission-id>
asc beta-review detail-get --build-id <id>
asc beta-review detail-update --build-id <id> --contact-email [email protected]
asc beta-review notify --build-id <id>
asc beta-review localizations list --build-id <id>Output formats
All list commands support --output table (default in TTY) or --output json (default in pipes/CI):
asc apps list --output json | jq '.[].bundleId'AI agent usage
# Get full command tree as structured JSON
asc --help --jsonSecurity
- Credentials stored in
~/.asc/credentials.json(permissions0600) - Private keys stored in macOS Keychain via the
securityCLI (no extra dependencies) - Use
--bypass-keychainorASC_BYPASS_KEYCHAIN=1to store the key file path in JSON instead - For CI: use
ASC_KEY_ID,ASC_ISSUER_ID,ASC_PRIVATE_KEY_PATHenv vars
License
MIT
