---
title: "ASCelerate: A Swift CLI for App Store Connect"
description: "If you've ever shipped an iOS app, you know the ritual. Open Xcode, archive, wait, open App Store Connect in the browser, click through a dozen screens to set up localizations, upload screenshots one…"
date: 2026-02-25
tags: ["App Store", "Apple", "asc client", "command line"]
canonical: https://keremerkan.dev/posts/ascelerate-swift-cli-app-store-connect/
---

If you've ever shipped an iOS app, you know the ritual. Open Xcode, archive, wait, open App Store Connect in the browser, click through a dozen screens to set up localizations, upload screenshots one display size at a time, attach the build, fill in What's New, and finally hit Submit. For one app, it's tedious. For multiple apps across multiple locales, it's a time sink.

I wanted a single tool that could handle the entire release pipeline from the terminal: Create a version, build, upload, set metadata, attach the build, submit for review, without leaving the command line. That's why I built **ASCelerate**.

## What It Is

ASCelerate — A Swift CLI for App Store Connect. It's a single native binary. Installation is straightforward:

```bash
brew tap keremerkan/tap
brew install ascelerate
ascelerate configure
```

The `configure` command walks you through setting up your App Store Connect API key. It copies your `.p8` private key to a secure location with owner-only permissions.

## The Full Release Pipeline in One Workflow

The most useful feature is workflow files. Instead of running commands one by one, you write a plain text file with one command per line:

```bash
# release.workflow — Ship MyApp v2.1.0

apps create-version com.example.MyApp 2.1.0
builds archive --scheme MyApp
builds upload --latest --bundle-id com.example.MyApp
builds await-processing com.example.MyApp
apps localizations import com.example.MyApp --file localizations.json
apps build attach-latest com.example.MyApp
apps review submit com.example.MyApp
```

Then run it:

```bash
ascelerate run-workflow release.workflow
```

The workflow displays all steps, asks for confirmation, and runs them sequentially. If any step fails, it stops and tells you where. Add `--yes` for CI/CD environments where there's no one to confirm.

## What It Covers

Beyond workflows, ascelerate handles the parts of App Store Connect that are tedious in the browser:

-   **Screenshots & previews** — capture from simulator, frame with device bezels, download, edit locally, re-upload in bulk with `media download` / `media upload --replace`
-   **Localizations** — export to JSON, edit, import back with `localizations export` / `localizations import`
-   **App info** — update name, subtitle, categories, privacy URLs with `app-info update` / `app-info import`
-   **Pre-submission checks** — `review preflight` verifies builds, localizations, app info, and screenshots across all locales before you hit submit
-   **In-app purchases & subscriptions** — create, update, delete, manage localizations, and submit for review. When submitting an app version, ascelerate detects IAPs/subscriptions with pending changes and offers to include them
-   **Provisioning** — manage devices, certificates (with auto-CSR), bundle IDs, capabilities, and profiles entirely from the terminal
-   **Profile reissue** — bulk-regenerate profiles after cert renewal with `profiles reissue --all`
-   **Everything else** — phased releases, territory availability, age ratings, encryption declarations, EULAs, rate limits

All commands support aliases (`alias add myapp` → use `myapp` instead of `com.example.MyApp`), colored terminal output with human-readable locale names, and interactive mode for guided prompts when arguments are omitted.

For a detailed walkthrough and documentation, see the [ascelerate site](https://ascelerate.dev).

## Why Swift?

I work almost exclusively in Swift and Xcode for iOS apps, so building the tooling in the same language was a natural choice. It also means ascelerate is a native binary. Startup is instant, there's no runtime to manage, and it compiles to a single ~64 MB executable for Apple Silicon.

Under the hood, it uses Aaron Sky's excellent [asc-swift](https://github.com/aaronsky/asc-swift) library, which provides type-safe access to the entire App Store Connect API. Apple's `xcrun altool` handles the actual binary uploads, the same tool Xcode uses, while ascelerate orchestrates everything around it.

## Built with Claude Code

I developed ascelerate with [Claude Code](https://claude.ai/code), Anthropic's CLI coding agent. It turned out to be a great fit for this kind of project. Wrapping a well-documented API, handling many similar-but-different subcommands, and dealing with the edge cases of Apple's API were handled efficiently while I focused on workflow design and user experience.

## Get Started

ascelerate is open source under the MIT license.

**Install via Homebrew:**

```bash
brew tap keremerkan/tap
brew install ascelerate
```

**Or download the binary** from [GitHub Releases](https://github.com/keremerkan/asc-cli/releases).

You'll need an App Store Connect API key. Create one in [Users and Access](https://appstoreconnect.apple.com/access/integrations/api) with the App Manager role. Then run `ascelerate configure` and you're set.

Full documentation is in the [README on GitHub](https://github.com/keremerkan/ascelerate).
