NAME
App-Store-Connect-CLI — Fast, scriptable CLI for the App Store Connect API. Automate TestFlight, builds, submissions, signing, analytics,…
SYNOPSIS
brew install ascINFO
DESCRIPTION
Fast, scriptable CLI for the App Store Connect API. Automate TestFlight, builds, submissions, signing, analytics, screenshots, subscriptions, and more. JSON-first, no interactive prompts
README
Unofficial App Store Connect CLI
A fast, lightweight, and scriptable CLI for the App Store Connect API. Automate iOS, macOS, tvOS, and visionOS release workflows from your terminal, IDE, or CI/CD pipeline.
Table of Contents
- asc skills
- Quick Start
- Wall of Apps
- Common Workflows
- Commands and Reference
- Documentation
- Contributing
- License
asc skills
Agent Skills for automating asc workflows including builds, TestFlight, metadata sync, submissions, and signing:
https://github.com/rudrankriyam/app-store-connect-cli-skills
Quick Start
Install
# Homebrew (recommended) brew install ascInstall script (macOS/Linux)
curl -fsSL https://asccli.sh/install | bash
For source builds and contributor setup, see CONTRIBUTING.md.
Authenticate
asc auth login \
--name "MyApp" \
--key-id "ABC123" \
--issuer-id "DEF456" \
--private-key /path/to/AuthKey.p8
Generate API keys at: https://appstoreconnect.apple.com/access/integrations/api
First command
asc apps list
Output defaults (TTY-aware)
asc chooses a default --output based on where stdout is connected:
- Interactive terminal (TTY):
table - Non-interactive output (pipes/files/CI):
json
You can still set a global preference:
export ASC_DEFAULT_OUTPUT=markdown
And explicit flags always win:
asc apps list --output json
Wall of Apps
60 apps ship with asc. See the Wall of Apps →
Want to add yours? Open a PR.
Add Your App to the Wall
Use:
make generate app APP="Your App Name" LINK="https://apps.apple.com/app/id1234567890" CREATOR="your-github-handle" PLATFORM="iOS,macOS"
This updates docs/wall-of-apps.json and re-syncs the Wall snippet in README.md.
Common Workflows
TestFlight feedback and crashes
asc feedback --app "123456789" --paginate
asc crashes --app "123456789" --sort -createdDate --limit 10
Builds and distribution
asc builds upload --app "123456789" --file "/path/to/MyApp.ipa"
asc testflight builds list --app "123456789" --output table
Validate and submit
asc validate --app "123456789" --version "1.2.3"
asc submit --app "123456789" --version "1.2.3"
Metadata and localization
asc localizations list --app "123456789"
asc app-info get --app "123456789" --output json --pretty
Screenshots and media
asc screenshots list --app "123456789"
asc video-previews list --app "123456789"
Signing and bundle IDs
asc certificates list
asc profiles list
asc bundle-ids list
Workflow automation
asc workflow run --file .asc/workflow.json --workflow release
Commands and Reference
Use built-in help as the source of truth:
asc --help
asc <command> --help
asc <command> <subcommand> --help
For full command families, flags, and discovery patterns, see:
Documentation
- docs/CI_CD.md - CI/CD integration guides (GitHub Actions, GitLab, Bitrise, CircleCI)
- docs/COMMANDS.md - Command families and reference navigation
- docs/API_NOTES.md - API quirks and behaviors
- docs/CONTRIBUTING.md - CLI development and testing notes
- docs/TESTING.md - Testing patterns and conventions
- docs/openapi/README.md - Offline OpenAPI snapshot + update flow
- CONTRIBUTING.md - Contribution guide
Acknowledgements
Local screenshot framing uses Koubou (pinned to 0.14.0) for deterministic device-frame rendering.
GitHub: https://github.com/bitomule/koubou
Simulator UI automation for screenshot capture and interactions uses AXe CLI. GitHub: https://github.com/cameroncooke/AXe
Contributing
Contributions are welcome. See CONTRIBUTING.md for details.
License
MIT License - see LICENSE for details.
Author
Star History
Built with Cursor
This project is an independent, unofficial tool and is not affiliated with, endorsed by, or sponsored by Apple Inc. App Store Connect, TestFlight, Xcode Cloud, and Apple are trademarks of Apple Inc., registered in the U.S. and other countries.