{"id":49904643,"url":"https://github.com/rorkai/app-store-connect-cli","last_synced_at":"2026-05-16T10:03:07.993Z","repository":{"id":333681538,"uuid":"1138200460","full_name":"rorkai/App-Store-Connect-CLI","owner":"rorkai","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","archived":false,"fork":false,"pushed_at":"2026-05-16T01:31:12.000Z","size":78118,"stargazers_count":4372,"open_issues_count":1,"forks_count":379,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-05-16T03:43:20.450Z","etag":null,"topics":["app-store-connect","apple","automation","cicd","cli","command-line-tool","developer-tools","devops","go","golang","ios","macos","swift","testflight","xcode"],"latest_commit_sha":null,"homepage":"https://asccli.sh","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rorkai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["rudrankriyam"]}},"created_at":"2026-01-20T11:17:23.000Z","updated_at":"2026-05-16T03:35:26.000Z","dependencies_parsed_at":"2026-04-01T10:02:08.125Z","dependency_job_id":null,"html_url":"https://github.com/rorkai/App-Store-Connect-CLI","commit_stats":null,"previous_names":["rudrankriyam/app-store-connect-cli","rorkai/app-store-connect-cli"],"tags_count":153,"template":false,"template_full_name":null,"purl":"pkg:github/rorkai/App-Store-Connect-CLI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rorkai%2FApp-Store-Connect-CLI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rorkai%2FApp-Store-Connect-CLI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rorkai%2FApp-Store-Connect-CLI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rorkai%2FApp-Store-Connect-CLI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rorkai","download_url":"https://codeload.github.com/rorkai/App-Store-Connect-CLI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rorkai%2FApp-Store-Connect-CLI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33098340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-store-connect","apple","automation","cicd","cli","command-line-tool","developer-tools","devops","go","golang","ios","macos","swift","testflight","xcode"],"created_at":"2026-05-16T10:03:05.066Z","updated_at":"2026-05-16T10:03:07.984Z","avatar_url":"https://github.com/rorkai.png","language":"Go","funding_links":["https://github.com/sponsors/rudrankriyam"],"categories":[],"sub_categories":[],"readme":"# App Store Connect CLI\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rorkai/App-Store-Connect-CLI/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/rorkai/App-Store-Connect-CLI?style=for-the-badge\u0026color=blue\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rorkai/App-Store-Connect-CLI/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/rorkai/app-store-connect-cli?style=for-the-badge\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.26+-00ADD8?style=for-the-badge\u0026logo=go\" alt=\"Go Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Homebrew-compatible-blue?style=for-the-badge\" alt=\"Homebrew\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/banner.png\" alt=\"asc -- App Store Connect CLI\" width=\"600\"\u003e\n\u003c/p\u003e\n\nA fast, lightweight, and scriptable CLI for the App Store Connect API.\nAutomate iOS, macOS, tvOS, and visionOS release workflows from your terminal, IDE, or CI/CD pipeline.\n\n## Table of Contents\n\n- [asc skills](#asc-skills)\n- [Sponsors](#sponsors)\n- [Quick Start](#quick-start)\n- [Troubleshooting](#troubleshooting)\n- [Support](#support)\n- [Wall of Apps](#wall-of-apps)\n- [Common Workflows](#common-workflows)\n- [Commands and Reference](#commands-and-reference)\n- [Documentation](#documentation)\n- [Contributing](#contributing)\n- [License](#license)\n\n## asc skills\n\nAgent Skills for automating `asc` workflows including builds, TestFlight, metadata sync, submissions, and signing:\nhttps://github.com/rorkai/app-store-connect-cli-skills\n\n## Quick Start\n\nIf you want to confirm the binary works before configuring authentication:\n\n```bash\nasc version\nasc --help\n```\n\n### 1. Install\n\n```bash\n# Homebrew (recommended)\nbrew install asc\n\n# Install script (macOS/Linux)\ncurl -fsSL https://asccli.sh/install | bash\n```\n\nWindows users can download the signed release binaries directly from the\n[GitHub releases page](https://github.com/rorkai/App-Store-Connect-CLI/releases/latest).\n\nFor source builds and contributor setup, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n### 2. Authenticate\n\n```bash\nasc auth login \\\n  --name \"MyApp\" \\\n  --key-id \"ABC123\" \\\n  --issuer-id \"DEF456\" \\\n  --private-key /path/to/AuthKey.p8 \\\n  --network\n```\n\nGenerate API keys at:\nhttps://appstoreconnect.apple.com/access/integrations/api\n\nIf you are running in CI, a headless shell, or a machine where keychain access is not available, use config-backed auth instead:\n\n```bash\nasc auth login \\\n  --bypass-keychain \\\n  --name \"MyCIKey\" \\\n  --key-id \"ABC123\" \\\n  --issuer-id \"DEF456\" \\\n  --private-key /path/to/AuthKey.p8\n```\n\n### 3. Validate auth\n\n```bash\nasc auth status --validate\nasc auth doctor\n```\n\n### 4. First command\n\n```bash\nasc apps list --output table\nasc apps list --output json --pretty\n```\n\n### Output defaults (TTY-aware)\n\n`asc` chooses a default `--output` based on where stdout is connected:\n\n- Interactive terminal (TTY): `table`\n- Non-interactive output (pipes/files/CI): `json`\n\nYou can still set a global preference:\n\n```bash\nexport ASC_DEFAULT_OUTPUT=markdown\n```\n\nAnd explicit flags always win:\n\n```bash\nasc apps list --output json\n```\n\n### Stability labels\n\n`asc` uses visible lifecycle labels so you can judge support expectations before\ndepending on a command in CI or scripts:\n\n- No label: stable public CLI contract for normal use\n- `[experimental]`: useful, but still evolving; expect sharper edges and faster iteration\n- `DEPRECATED:` or deprecation warnings: compatibility path kept during migration, but not the long-term home\n\n## Troubleshooting\n\n### Homebrew\n\n- Refresh Homebrew first: `brew update \u0026\u0026 brew upgrade asc`\n- Check which binary you are running: `which asc`\n- Confirm the installed version: `asc version`\n- If Homebrew is behind the latest GitHub release, use the install script from `https://asccli.sh/install`\n\n### Authentication\n\n- Validate the active profile: `asc auth status --validate`\n- Run the auth health check: `asc auth doctor`\n- If keychain access is blocked, retry with `ASC_BYPASS_KEYCHAIN=1` or re-run `asc auth login --bypass-keychain`\n- Use `asc auth login --local --bypass-keychain ...` when you want repo-local credentials in `./.asc/config.json`\n\n### Output\n\n- `asc` defaults to `table` in an interactive terminal and `json` in pipes, files, and CI\n- Use an explicit format when scripting or sharing repro steps: `--output json`, `--output table`, or `--output markdown`\n- Use `--pretty` with JSON when you want readable output in terminals or bug reports\n- Set a personal default with `ASC_DEFAULT_OUTPUT`, but remember `--output` always wins\n\n## Support\n\n- Use [GitHub Discussions](https://github.com/rorkai/App-Store-Connect-CLI/discussions) for install help, authentication setup, workflow advice, and \"how do I...?\" questions\n- Use [GitHub Issues](https://github.com/rorkai/App-Store-Connect-CLI/issues) for reproducible bugs and concrete feature requests\n- See [SUPPORT.md](SUPPORT.md) for the support policy and bug-report checklist\n- 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 ...`\n\n## Wall of Apps\n\n[See the Wall of Apps →](https://asccli.sh/#wall-of-apps)\n\nWant to add yours?\n`asc apps wall submit --app \"1234567890\" --confirm`\n\nThe command uses your authenticated `gh` session to fork the repo and open a pull request that updates `docs/wall-of-apps.json`.\nIt 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`.\nUse `asc apps wall submit --dry-run` to preview the fork, branch, and PR plan before creating anything.\n\n## Common Workflows\n\n### TestFlight feedback and crashes\n\n```bash\nasc testflight feedback list --app \"123456789\" --paginate\nasc testflight crashes list --app \"123456789\" --sort -createdDate --limit 10\nasc testflight crashes log --submission-id \"SUBMISSION_ID\"\n```\n\n### Builds and distribution\n\n```bash\nasc builds upload --app \"123456789\" --ipa \"/path/to/MyApp.ipa\"\nasc builds list --app \"123456789\" --output table\nasc testflight groups list --app \"123456789\" --output table\n```\n\n### Release (high-level App Store publish flow)\n\n```bash\n# Optional: preview the staging plan before submission\nasc release stage --app \"123456789\" --version \"1.2.3\" --build \"BUILD_ID\" --copy-metadata-from \"1.2.2\" --dry-run\n\n# Canonical upload + attach + submit command\nasc publish appstore --app \"123456789\" --ipa \"/path/to/MyApp.ipa\" --version \"1.2.3\" --submit --confirm\n\n# Monitor status after submission\nasc status --app \"123456789\" --watch\n```\n\nLower-level submission lifecycle commands (for debugging or partial workflows):\n\n```bash\n# Canonical readiness check\nasc validate --app \"123456789\" --version \"1.2.3\"\nasc submit status --version-id \"VERSION_ID\"\nasc submit cancel --version-id \"VERSION_ID\" --confirm\n```\n\n### Review status and blockers\n\n```bash\nasc review status --app \"123456789\"\nasc review doctor --app \"123456789\"\n```\n\n### Metadata and localization\n\n```bash\nasc localizations list --app \"123456789\" --type app-info\nasc metadata init --dir \"./metadata\" --version \"1.2.3\" --locale \"en-US\"\nasc metadata apply --app \"123456789\" --version \"1.2.3\" --dir \"./metadata\" --dry-run\nasc metadata keywords audit --app \"123456789\" --version \"1.2.3\" --blocked-terms-file \"./blocked-terms.txt\"\nasc apps info view --app \"123456789\" --output json --pretty\n```\n\nUse `asc metadata keywords audit` before `sync` or `apply` when you want an ASO-focused\nreview of live keyword metadata across locales. It reports duplicate phrases, repeated\nterms across locales, overlap with localized app name or subtitle, byte-budget usage,\nand optional blocked terms from repeated `--blocked-term` flags or a text file.\n\n### Screenshots and media\n\n```bash\nasc screenshots plan --app \"123456789\" --version \"1.2.3\" --review-output-dir \"./screenshots/review\"\nasc screenshots apply --app \"123456789\" --version \"1.2.3\" --review-output-dir \"./screenshots/review\" --confirm\nasc screenshots list --version-localization \"VERSION_LOCALIZATION_ID\"\nasc video-previews list --app \"123456789\"\n```\n\nUploading screenshots for a single locale:\n\n```bash\nasc apps list\nasc versions list --app \"APP_ID\"\nasc localizations list --version \"VERSION_ID\" --output json --locale \"en-US\" | jsonpp\nasc screenshots upload --version-localization \"VERSION_LOCALIZATION_ID\" --path \"./screenshots/en-US\" --device-type \"IPHONE_65\" --replace\n```\n\n`VERSION_LOCALIZATION_ID` is the App Store version localization resource ID\nfrom `data[].id`, not the locale code from `attributes.locale`.\n\n### Signing and bundle IDs\n\n```bash\nasc certificates list\nasc profiles list\nasc bundle-ids list\n```\n\n### Workflow automation\n\n```bash\nasc workflow validate\nasc workflow run --dry-run testflight_beta VERSION:1.2.3\n```\n\n### Verified local Xcode -\u003e TestFlight workflow\n\nSee [docs/WORKFLOWS.md](docs/WORKFLOWS.md) for a copyable `.asc/workflow.json`\nand `ExportOptions.plist` that use `asc builds next-build-number`, `asc xcode archive`,\n`asc xcode export`, and `asc publish testflight --group ... --wait`. Add\n`--submit --confirm` when distributing to an external TestFlight group that needs\nbeta app review submission.\n\n```bash\nasc workflow validate\nasc workflow run --dry-run testflight_beta VERSION:1.2.3\nasc workflow run testflight_beta VERSION:1.2.3\n```\n\n### Xcode Cloud workflows and build runs\n\n```bash\n# Trigger from a pull request\nasc xcode-cloud run --workflow-id \"WORKFLOW_ID\" --pull-request-id \"PR_ID\"\n\n# Rerun from an existing build run with a clean build\nasc xcode-cloud run --source-run-id \"BUILD_RUN_ID\" --clean\n\n# Fetch a single build run by ID\nasc xcode-cloud build-runs get --id \"BUILD_RUN_ID\"\n```\n\n## Commands and Reference\n\nUse built-in help as the source of truth:\n\n```bash\nasc --help\nasc \u003ccommand\u003e --help\nasc \u003ccommand\u003e \u003csubcommand\u003e --help\n```\n\nReference hierarchy:\n\n- `asc --help`: authoritative command and flag surface\n- `docs/COMMANDS.md`: generated top-level taxonomy map\n- `asc docs show workflows`: curated workflow recipes\n- `asc docs show reference`: repo-local quick reference template used by `asc init`\n\nFor full command families, flags, and discovery patterns, see:\n- [docs/COMMANDS.md](docs/COMMANDS.md)\n\n## Documentation\n\n- [docs/CI_CD.md](docs/CI_CD.md) - CI/CD integration guides (GitHub Actions, GitLab, Bitrise, CircleCI)\n- [docs/COMMANDS.md](docs/COMMANDS.md) - Command families and reference navigation\n- [docs/WORKFLOWS.md](docs/WORKFLOWS.md) - Reusable workflow patterns, including local Xcode to TestFlight\n- [docs/API_NOTES.md](docs/API_NOTES.md) - API quirks and behaviors\n- [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) - CLI development and testing notes\n- [docs/TESTING.md](docs/TESTING.md) - Testing patterns and conventions\n- [docs/openapi/README.md](docs/openapi/README.md) - Offline OpenAPI snapshot + update flow\n- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guide\n\n## Acknowledgements\n\nLocal screenshot framing uses Koubou (pinned to `0.18.1`) for deterministic device-frame rendering.\nGitHub: https://github.com/bitomule/koubou\n\nSimulator UI automation for screenshot capture and interactions uses AXe CLI.\nGitHub: https://github.com/cameroncooke/AXe\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=rorkai/App-Store-Connect-CLI\u0026type=Date)](https://star-history.com/#rorkai/App-Store-Connect-CLI\u0026Date)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eThis 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.\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frorkai%2Fapp-store-connect-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frorkai%2Fapp-store-connect-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frorkai%2Fapp-store-connect-cli/lists"}