Skip to content

Latest commit

 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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-cli

Authenticate

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 personal

The 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 --validate

Profile 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 work

Environment 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 user@example.com
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 list

In-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 test@example.com
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 --json

Security

  • Credentials stored in ~/.asc/credentials.json (permissions 0600)
  • Private keys stored in macOS Keychain via the security CLI (no extra dependencies)
  • Use --bypass-keychain or ASC_BYPASS_KEYCHAIN=1 to store the key file path in JSON instead
  • For CI: use ASC_KEY_ID, ASC_ISSUER_ID, ASC_PRIVATE_KEY_PATH env vars

License

MIT

About

App Store Connect CLI for AI Agents

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages