Fast, scriptable CLI for the App Store Connect API. Automate TestFlight, builds, submissions, signing, analytics, screenshots, subscriptions, and more. JSON-first, no interactive prompts
  • Go 99.5%
  • Python 0.3%
Find a file
2026-04-24 20:52:46 +05:30
.githooks fix(docs): keep root Mintlify pages on docs-only hook path 2026-03-28 13:22:35 +05:30
.github docs: prepare 1.2.3 release 2026-04-17 16:02:03 +05:30
.mintlify Add Mintlify assistant instructions 2026-03-28 12:48:15 +05:30
apps/studio test: simplify studio insights date stubbing 2026-04-06 11:33:38 +05:30
cicd Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
cmd Update root CLI tagline 2026-04-17 15:54:47 +05:30
commands workflow: expand docs and examples for output name scope 2026-04-23 15:56:30 +05:30
concepts Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
configuration fix: restore publish appstore as canonical flow 2026-04-01 16:03:39 +05:30
docs apps wall: add Echo Sleep: AI Sleep Sounds 2026-04-23 21:34:15 +02:00
guides Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
internal Address subscription setup review feedback 2026-04-23 18:31:09 +02:00
resources docs: add 1.2.6 changelog 2026-04-24 20:52:46 +05:30
scripts chore: remove installs badge workflow (#1448) 2026-04-17 12:39:08 +05:30
.gitignore Prepare ASC Studio 0.0.1 release 2026-04-01 15:07:04 +05:30
.golangci.yml Fix lint tooling for Go 1.26 2026-04-01 12:27:12 +05:30
.mintignore fix(docs): stop studio css from breaking mintlify scroll 2026-04-02 16:16:17 +05:30
AGENTS.md Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
authentication.mdx Promote Mintlify docs to repo root 2026-03-28 12:38:53 +05:30
CLAUDE.md Remove stale ASC.md to prevent AI agents from giving wrong answers 2026-02-17 03:29:00 +05:30
CODE_OF_CONDUCT.md Improve repo discoverability and community health 2026-02-17 05:06:24 +05:30
CONTRIBUTING.md Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
docs.json Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
go.mod fix studio command parsing and generated artifact ignores 2026-03-30 19:09:20 +05:30
go.sum deps: add Wails v2 dependency for ASC Studio 2026-03-30 13:54:44 +05:30
index.mdx fix(docs): stop studio css from breaking mintlify scroll 2026-04-02 16:16:17 +05:30
install.sh Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
installation.mdx Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
introduction.mdx fix: restore publish appstore as canonical flow 2026-04-01 16:03:39 +05:30
LICENSE Initial commit 2026-01-20 16:47:23 +05:30
main.go test: add phase 6 main package coverage and finalize plan 2026-02-10 03:04:11 +05:30
main_test.go test: add phase 6 main package coverage and finalize plan 2026-02-10 03:04:11 +05:30
Makefile Merge branch 'main' into codex/stable-selector-resolution-review-fixes 2026-04-01 13:07:56 +05:30
makefile_test.go build: split CI, hook, and release hardening (#1254) 2026-03-29 18:19:48 +05:30
migrate-to-1-0.mdx docs: add 1.0 migration guide and remove stale command refs 2026-04-03 01:46:50 +05:30
quickstart.mdx Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
README.md docs: clarify README localizations example 2026-04-22 14:41:49 +05:30
release_workflow_test.go build: split CI, hook, and release hardening (#1254) 2026-03-29 18:19:48 +05:30
SECURITY.md Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30
SUPPORT.md Migrate repo links to rorkai (#1442) 2026-04-17 06:35:50 +05:30

App Store Connect CLI

Latest Release GitHub Stars Go Version License Homebrew

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

Agent Skills for automating asc workflows including builds, TestFlight, metadata sync, submissions, and signing: https://github.com/rorkai/app-store-connect-cli-skills

Quick Start

If you want to confirm the binary works before configuring authentication:

asc version
asc --help

1. Install

# Homebrew (recommended)
brew install asc

# Install script (macOS/Linux)
curl -fsSL https://asccli.sh/install | bash

Windows users can download the signed release binaries directly from the GitHub releases page.

For source builds and contributor setup, see CONTRIBUTING.md.

2. Authenticate

asc auth login \
  --name "MyApp" \
  --key-id "ABC123" \
  --issuer-id "DEF456" \
  --private-key /path/to/AuthKey.p8 \
  --network

Generate API keys at: https://appstoreconnect.apple.com/access/integrations/api

If you are running in CI, a headless shell, or a machine where keychain access is not available, use config-backed auth instead:

asc auth login \
  --bypass-keychain \
  --name "MyCIKey" \
  --key-id "ABC123" \
  --issuer-id "DEF456" \
  --private-key /path/to/AuthKey.p8

3. Validate auth

asc auth status --validate
asc auth doctor

4. First command

asc apps list --output table
asc apps list --output json --pretty

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

Stability labels

asc uses visible lifecycle labels so you can judge support expectations before depending on a command in CI or scripts:

  • No label: stable public CLI contract for normal use
  • [experimental]: useful, but still evolving; expect sharper edges and faster iteration
  • DEPRECATED: or deprecation warnings: compatibility path kept during migration, but not the long-term home

Troubleshooting

Homebrew

  • Refresh Homebrew first: brew update && brew upgrade asc
  • Check which binary you are running: which asc
  • Confirm the installed version: asc version
  • If Homebrew is behind the latest GitHub release, use the install script from https://asccli.sh/install

Authentication

  • Validate the active profile: asc auth status --validate
  • Run the auth health check: asc auth doctor
  • If keychain access is blocked, retry with ASC_BYPASS_KEYCHAIN=1 or re-run asc auth login --bypass-keychain
  • Use asc auth login --local --bypass-keychain ... when you want repo-local credentials in ./.asc/config.json

Output

  • asc defaults to table in an interactive terminal and json in pipes, files, and CI
  • Use an explicit format when scripting or sharing repro steps: --output json, --output table, or --output markdown
  • Use --pretty with JSON when you want readable output in terminals or bug reports
  • Set a personal default with ASC_DEFAULT_OUTPUT, but remember --output always wins

Support

  • Use GitHub Discussions for install help, authentication setup, workflow advice, and "how do I...?" questions
  • Use GitHub Issues for reproducible bugs and concrete feature requests
  • See SUPPORT.md for the support policy and bug-report checklist
  • Before filing an auth or API bug, retry with ASC_BYPASS_KEYCHAIN=1; if it is safe to do so, include redacted output from ASC_DEBUG=api asc ... or asc --api-debug ...

Wall of Apps

See the Wall of Apps →

Want to add yours? asc apps wall submit --app "1234567890" --confirm

The command uses your authenticated gh session to fork the repo and open a pull request that updates docs/wall-of-apps.json. It resolves the public App Store name, URL, and icon from the app ID automatically. For manual entries that are not on the public App Store yet, use --link with --name. Use asc apps wall submit --dry-run to preview the fork, branch, and PR plan before creating anything.

Common Workflows

TestFlight feedback and crashes

asc testflight feedback list --app "123456789" --paginate
asc testflight crashes list --app "123456789" --sort -createdDate --limit 10
asc testflight crashes log --submission-id "SUBMISSION_ID"

Builds and distribution

asc builds upload --app "123456789" --ipa "/path/to/MyApp.ipa"
asc builds list --app "123456789" --output table
asc testflight groups list --app "123456789" --output table

Release (high-level App Store publish flow)

# Optional: preview the staging plan before submission
asc release stage --app "123456789" --version "1.2.3" --build "BUILD_ID" --copy-metadata-from "1.2.2" --dry-run

# Canonical upload + attach + submit command
asc publish appstore --app "123456789" --ipa "/path/to/MyApp.ipa" --version "1.2.3" --submit --confirm

# Monitor status after submission
asc status --app "123456789" --watch

Lower-level submission lifecycle commands (for debugging or partial workflows):

# Canonical readiness check
asc validate --app "123456789" --version "1.2.3"
asc submit status --version-id "VERSION_ID"
asc submit cancel --version-id "VERSION_ID" --confirm

Review status and blockers

asc review status --app "123456789"
asc review doctor --app "123456789"

Metadata and localization

asc localizations list --app "123456789" --type app-info
asc metadata apply --app "123456789" --version "1.2.3" --dir "./metadata" --dry-run
asc metadata keywords audit --app "123456789" --version "1.2.3" --blocked-terms-file "./blocked-terms.txt"
asc apps info view --app "123456789" --output json --pretty

Use asc metadata keywords audit before sync or apply when you want an ASO-focused review of live keyword metadata across locales. It reports duplicate phrases, repeated terms across locales, overlap with localized app name or subtitle, byte-budget usage, and optional blocked terms from repeated --blocked-term flags or a text file.

Screenshots and media

asc screenshots plan --app "123456789" --version "1.2.3" --review-output-dir "./screenshots/review"
asc screenshots apply --app "123456789" --version "1.2.3" --review-output-dir "./screenshots/review" --confirm
asc screenshots list --version-localization "LOC_ID"
asc video-previews list --app "123456789"

Uploading screenshots for a single locale:

asc apps list
asc versions list --app "APP_ID"
asc localizations list --version "VERSION_ID" --output json --locale "en-US" | jsonpp
asc screenshots upload --version-localization "VERSION_LOCALIZATION_ID" --path "./screenshots/en-US" --device-type "IPHONE_65" --replace

Signing and bundle IDs

asc certificates list
asc profiles list
asc bundle-ids list

Workflow automation

asc workflow validate
asc workflow run --dry-run testflight_beta VERSION:1.2.3

Verified local Xcode -> TestFlight workflow

See docs/WORKFLOWS.md for a copyable .asc/workflow.json and ExportOptions.plist that use asc builds next-build-number, asc xcode archive, asc xcode export, and asc publish testflight --group ... --wait. Add --submit --confirm when distributing to an external TestFlight group that needs beta app review submission.

asc workflow validate
asc workflow run --dry-run testflight_beta VERSION:1.2.3
asc workflow run testflight_beta VERSION:1.2.3

Xcode Cloud workflows and build runs

# Trigger from a pull request
asc xcode-cloud run --workflow-id "WORKFLOW_ID" --pull-request-id "PR_ID"

# Rerun from an existing build run with a clean build
asc xcode-cloud run --source-run-id "BUILD_RUN_ID" --clean

# Fetch a single build run by ID
asc xcode-cloud build-runs get --id "BUILD_RUN_ID"

Commands and Reference

Use built-in help as the source of truth:

asc --help
asc <command> --help
asc <command> <subcommand> --help

Reference hierarchy:

  • asc --help: authoritative command and flag surface
  • docs/COMMANDS.md: generated top-level taxonomy map
  • asc docs show workflows: curated workflow recipes
  • asc docs show reference: repo-local quick reference template used by asc init

For full command families, flags, and discovery patterns, see:

Documentation

Acknowledgements

Local screenshot framing uses Koubou (pinned to 0.18.1) 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.

Star History

Star History Chart


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.