Open Source · MIT License

App Store Connect,
from your terminal.

A Swift CLI for managing your iOS and macOS apps on App Store Connect. Submit versions, manage screenshots, track builds — with full AI-agent support via CAEOAS affordances.

$ brew install tddworks/tap/asccli
130+
Commands
CAEOAS
AI-Agent Ready
MIT
Open Source
100+
API Endpoints
zsh — 80×24

Features

Everything you need, nothing you don't

Built on the official App Store Connect API, with a clean three-layer architecture and full affordance output for AI agent workflows.

AI-Agent Ready (CAEOAS)

Every response embeds ready-to-run next commands in an affordances field. No agent needs to know the full command tree — it just follows the links.

App
├─ AppStoreVersion
│  └─ Localization
│     └─ ScreenshotSet
├─ AppInfo
│  └─ AppInfoLocalization
├─ Build
└─ TestFlight

Full Resource Hierarchy

Manage the complete App Store Connect resource tree: Apps → Versions → Localizations → Screenshot Sets → Screenshots. Plus Builds and TestFlight.

$ asc versions submit \
  --version-id a9657737
// 4 API calls, 1 command:
1. GET /appStoreVersions/{id}
2. POST /reviewSubmissions
3. POST /reviewSubmissionItems
4. PATCH /reviewSubmissions/{id}
state: WAITING_FOR_REVIEW

One-Command Submission

Submit any iOS or macOS version for App Store review with a single command. The CLI handles the full multi-step review submission flow automatically.

Pre-flight Check Readiness

Run all submission checks in one command before you hit submit. Catches missing builds, unconfigured pricing, and incomplete localizations — with MUST FIX vs SHOULD FIX severity. The submit affordance only appears when everything is green.

$ asc iris status
source: browser · cookies: 5
$ asc iris apps create \
  --name "My App" \
  --bundle-id com.example.app \
  --sku MYSKU
id: 1234567890

Iris (Private API)

Access the private API that powers the App Store Connect web UI. Create new apps, list all apps — capabilities not available through the public REST API. Cookie-based auth from your browser, zero extra setup.

# save key once
$ asc app-shots config \
  --gemini-api-key KEY
# drop PNGs in .asc/app-shots/ → run
$ asc app-shots generate
# localize in one command
$ asc app-shots translate \
  --to zh --to ja
screen-0.png · 1320×2868
zh/ ja/ ← localized

AI Screenshot Generator

Generate polished App Store screenshots at 1320×2868 (iPhone 6.9") with Gemini AI, then localize in one command — asc app-shots translate --to zh --to ja. Correct App Store dimensions guaranteed.

$ asc version-localizations list \
  --version-id v1
$ asc version-localizations update \
  --localization-id id \
  --whats-new "Bug fixes"
en-US · zh-Hans · ja · ko

Version Localizations

Update per-locale What's New text, description, keywords, and promotional URLs for any app version. Full CRUD — list, create, and update across all supported locales.

$ asc screenshot-sets create \
  --localization-id id \
  --display-type APP_IPHONE_67
$ asc screenshots upload \
  --set-id id --file screen.png
3-step ASC upload flow

Screenshots

Create screenshot sets for any display size and upload PNG images via the 3-step ASC upload flow. Supports all iPhone, iPad, Mac, and Apple TV display types.

$ asc app-preview-sets create \
  --localization-id id \
  --preview-type IPHONE_67
$ asc app-previews upload \
  --set-id id --file preview.mp4 \
  --preview-frame-time-code 00:00:05

App Previews

Upload video previews (.mp4, .mov, .m4v) with optional thumbnail timecode. The CLI handles the complete 3-step upload flow: reserve, chunk upload, and MD5 confirm.

$ asc app-info-localizations list \
  --app-info-id id
$ asc app-info-localizations update \
  --localization-id id \
  --name "My App" \
  --subtitle "Do things faster"

App Info Localizations

Read and write per-locale app metadata: name, subtitle, and privacy policy URL. App-level metadata that applies across all versions — separate from version localizations.

# one-time setup
$ asc auth login \
  --key-id KEY \
  --private-key-path ~/.asc/Key.p8
saved to ~/.asc/credentials.json
# no env vars needed from now on
$ asc apps list

Persistent Auth Login

Log in once with asc auth login. Credentials are saved to ~/.asc/credentials.json and picked up automatically by every command — no environment variables required per session.

$ asc builds upload \
  --app-id id --file MyApp.ipa \
  --version 1.2.0 --build-number 55
// 5-step flow:
1. Reserve slot
2. Upload chunks
3. Confirm MD5
state: processing

Builds Upload

Upload IPA/PKG via the 5-step ASC upload flow: reserve slot, upload chunks, confirm MD5, then poll for processing. Includes list, get, and delete for upload records.

$ asc testflight groups list \
  --app-id id
$ asc testflight testers add \
  --beta-group-id id \
  --email [email protected]
$ asc testflight testers import \
  --beta-group-id id --file testers.csv

TestFlight

Manage beta groups and testers: add or remove by email, bulk import/export via CSV, distribute builds to groups, and update What's New notes per locale.

Multiple Output Formats

Designed for both humans and machines. Output as JSON (default), table, or markdown. Pipe into jq, scripts, or AI agents with ease.

$ asc iap create --app-id id \
  --type consumable \
  --reference-name "Coins 100"
$ asc iap prices set \
  --iap-id id --base-territory USA \
  --price-point-id id
$ asc iap submit --iap-id id

In-App Purchases

Create consumable, non-consumable, and non-renewing subscription IAPs. Set per-territory pricing from App Store price points, manage per-locale name and description, and submit for review.

$ asc subscription-groups create \
  --app-id id --reference-name "Pro"
$ asc subscriptions create \
  --group-id id --period ONE_MONTH
$ asc subscription-offers create \
  --subscription-id id \
  --mode FREE_TRIAL --periods 7

Auto-Renewable Subscriptions

Create subscription groups and tiers (weekly to yearly). Manage introductory offers (free trial, pay-as-you-go, pay-up-front), per-locale metadata, and submit for review.

$ asc bundle-ids create \
  --name "My App" \
  --identifier com.example.app \
  --platform ios
$ asc profiles create \
  --type IOS_APP_STORE \
  --bundle-id-id id --certificate-ids id

Code Signing

Manage the full signing chain: register bundle IDs, create certificates from CSR, register devices by UDID, and create or delete provisioning profiles — all from the terminal.

$ asc tui
┌─ Apps ─────────────────────────┐
▶ AppNexus
│  My Other App
└────────────────────────────────┘
↑↓ navigate · Enter · Esc back

Interactive TUI Mode

Run asc tui for a full terminal UI browser. Navigate Apps, Versions, Builds, and TestFlight with arrow keys — no commands to memorize. Perfect for exploration and discovery.

Quick Start

Up and running in minutes

1
$ brew install tddworks/tap/asccli
🍺 Pouring asc...
asc installed
$ asc --version
asc 1.0.0

Install via Homebrew

One command installs the latest release. No Xcode or Swift toolchain required.

2
$ asc auth login \
  --key-id YOUR_KEY_ID \
  --issuer-id YOUR_ISSUER \
  --private-key-path ~/.asc/Key.p8
$ asc auth check
source: "file" · key: YOUR_KEY_ID
# saved to ~/.asc/credentials.json

Log in once, run forever

Save your API key with asc auth login. Credentials are stored in ~/.asc/credentials.json — no environment variables needed per session.

3
$ asc apps list
$ asc versions list --app-id <id>
$ asc screenshots upload \
  --set-id <id> --file shot.png
$ asc versions submit \
  --version-id <id>
Submitted for review

Start managing your apps

List apps, inspect versions, upload screenshots, and submit for review — all from your terminal or from an AI agent.

Agent Skills

Supercharge your AI agent

Install 26+ pre-built skills that teach your AI coding agent how to use every asc command — from uploads to submissions.

$ asc skills install --all

asc-builds-upload

Upload IPA/PKG builds and manage TestFlight distribution

asc-app-shots

Generate and translate App Store screenshots with AI

asc-check-readiness

Pre-flight checks before submitting for review

asc-auth

Set up and manage App Store Connect API credentials

asc-testflight

Manage beta groups and testers for TestFlight

asc-release-workflow

End-to-end release: bump, archive, upload, submit

26+ skills available — works with Claude Code, Cursor, Windsurf, and more

Ready to try asc?

Automate your App Store Connect workflow

$ brew install tddworks/tap/asccli

Community

App Wall

Real apps on the App Store published by developers using asc CLI.

$ asc app-wall submit --app-id <your-app-id>

One command to submit your app and open a pull request →

Built for real apps

Sponsors