{"id":47300537,"url":"https://github.com/rudrankriyam/App-Store-Connect-CLI","last_synced_at":"2026-03-31T06:00:41.233Z","repository":{"id":333681538,"uuid":"1138200460","full_name":"rudrankriyam/App-Store-Connect-CLI","owner":"rudrankriyam","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-03-25T08:23:29.000Z","size":11782,"stargazers_count":3288,"open_issues_count":3,"forks_count":249,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-03-25T09:30:46.753Z","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/rudrankriyam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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-03-25T08:45:01.000Z","dependencies_parsed_at":"2026-01-27T02:00:35.992Z","dependency_job_id":null,"html_url":"https://github.com/rudrankriyam/App-Store-Connect-CLI","commit_stats":null,"previous_names":["rudrankriyam/app-store-connect-cli"],"tags_count":128,"template":false,"template_full_name":null,"purl":"pkg:github/rudrankriyam/App-Store-Connect-CLI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudrankriyam%2FApp-Store-Connect-CLI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudrankriyam%2FApp-Store-Connect-CLI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudrankriyam%2FApp-Store-Connect-CLI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudrankriyam%2FApp-Store-Connect-CLI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rudrankriyam","download_url":"https://codeload.github.com/rudrankriyam/App-Store-Connect-CLI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudrankriyam%2FApp-Store-Connect-CLI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31223286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T04:08:55.938Z","status":"ssl_error","status_checked_at":"2026-03-31T04:08:47.883Z","response_time":111,"last_error":"SSL_read: 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-03-17T01:38:19.961Z","updated_at":"2026-03-31T06:00:41.228Z","avatar_url":"https://github.com/rudrankriyam.png","language":"Go","funding_links":["https://github.com/sponsors/rudrankriyam"],"categories":["Go"],"sub_categories":[],"readme":"# Unofficial App Store Connect CLI\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rudrankriyam/App-Store-Connect-CLI/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/rudrankriyam/App-Store-Connect-CLI?style=for-the-badge\u0026color=blue\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rudrankriyam/App-Store-Connect-CLI/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/rudrankriyam/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  \u003ca href=\"https://github.com/rudrankriyam/App-Store-Connect-CLI/releases\" title=\"GitHub release assets (all-time) + Homebrew installs (365d), see docs/badges/README.md\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Frudrankriyam%2FApp-Store-Connect-CLI%2Fmain%2Fdocs%2Fbadges%2Finstalls-total.json\u0026amp;style=for-the-badge\u0026amp;color=brightgreen\" alt=\"Estimated total downloads\"\u003e\u003c/a\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/rudrankriyam/app-store-connect-cli-skills\n\n## Sponsors\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://rork.com/\"\u003e\n    \u003cimg src=\"docs/images/rork-logo.svg\" alt=\"Rork logo\" width=\"180\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://x.com/vibecodeapp_\"\u003e\n    \u003cimg src=\"docs/images/vibecode-logo-trimmed.png\" alt=\"Vibecode logo\" width=\"90\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[Rork](https://rork.com/) helps you build real mobile apps by chatting with AI, going from idea to phone in minutes and to the App Store in hours.\n\n[Vibecode](https://x.com/vibecodeapp_) helps you build mobile apps and web apps with AI, turning ideas into working products in seconds.\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 rudrankriyam/tap/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/rudrankriyam/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/rudrankriyam/App-Store-Connect-CLI/discussions) for install help, authentication setup, workflow advice, and \"how do I...?\" questions\n- Use [GitHub Issues](https://github.com/rudrankriyam/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: validate + attach + submit)\n\n```bash\n# Dry-run first to preview steps\nasc release run --app \"123456789\" --version \"1.2.3\" --build \"BUILD_ID\" --metadata-dir \"./metadata/version/1.2.3\" --dry-run\n\n# Run the full pipeline: ensure version, apply metadata, attach build, validate, submit\nasc release run --app \"123456789\" --version \"1.2.3\" --build \"BUILD_ID\" --metadata-dir \"./metadata/version/1.2.3\" --confirm\n\n# Monitor status after submission\nasc status --app \"123456789\" --watch\n```\n\nLower-level alternatives (for scripting or partial workflows):\n\n```bash\n# Canonical readiness check (preferred over deprecated `asc submit preflight`)\nasc validate --app \"123456789\" --version \"1.2.3\"\nasc submit create --app \"123456789\" --version \"1.2.3\" --build \"BUILD_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\"\nasc metadata apply --app \"123456789\" --version \"1.2.3\" --dir \"./metadata\" --dry-run\nasc apps info view --app \"123456789\" --output json --pretty\n```\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 \"LOC_ID\"\nasc video-previews list --app \"123456789\"\n```\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`.\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## Author\n\n[Rudrank Riyam](https://github.com/rudrankriyam)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=rudrankriyam/App-Store-Connect-CLI\u0026type=Date)](https://star-history.com/#rudrankriyam/App-Store-Connect-CLI\u0026Date)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/codex-logo.png\" alt=\"Codex logo\" width=\"24\" height=\"24\" /\u003e\n  \u003cimg src=\"https://cursor.com/marketing-static/icon-192x192.png\" alt=\"Cursor logo\" width=\"24\" height=\"24\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Built with Codex \u0026amp; Cursor using GPT-5.3-Codex and GPT-5.4\n\u003c/p\u003e\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%2Frudrankriyam%2FApp-Store-Connect-CLI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frudrankriyam%2FApp-Store-Connect-CLI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudrankriyam%2FApp-Store-Connect-CLI/lists"}