# rorkai/app-store-connect-cli architecture

> Architecture diagram of the GitHub repository rorkai/app-store-connect-cli, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rorkai/app-store-connect-cli
- Repository: https://github.com/rorkai/app-store-connect-cli

## Overview

ASC is a terminal client for managing Apple App Store Connect resources and automating app-release operations. Users invoke commands through the root CLI; feature handlers validate options, use authentication and the ASC API client to read or change Apple-managed resources, then render results. The tree documents broad branches for apps, builds and TestFlight, metadata, analytics, commerce, and distribution, alongside signing and upload workflows. Sampled sources confirm API query construction and routing-coverage operations, but do not expose the full command-registration or shared client wiring; uncertain links are omitted.

Main entry points: [`cmd/run.go`](https://github.com/rorkai/app-store-connect-cli/blob/main/cmd/run.go) (Invocation runtime), [`internal/asc/client_core.go`](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/client_core.go) (ASC API client), [`internal/cli/routingcoverage/routing_coverage.go`](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/routingcoverage/routing_coverage.go) (Routing coverage), [`internal/cli/apps/apps.go`](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/apps/apps.go) (Apps and metadata)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI entry"]
  node_root["CLI root<br/>[root.go]"]
  node_run["Invocation runtime<br/>[run.go]"]
  node_output["Output rendering<br/>[output_core.go]"]
end

subgraph group_access["Access and API"]
  node_authcmd["Auth commands<br/>[auth.go]"]
  node_authstore[("Auth persistence<br/>[keychain.go]")]
  node_apiclient["ASC API client<br/>[client_core.go]"]
end

subgraph group_release["Release workflows"]
  node_builds["Builds and TestFlight<br/>[builds.go]"]
  node_submission["Review submissions"]
  node_routing["Routing coverage"]
  node_releaseflow["Release orchestration"]
  node_artifacts["Artifact handling<br/>[inspect.go]"]
  node_signing["Signing management"]
  node_sync["Signing sync"]
  node_objectstore[("Remote object storage<br/>[objectstorage.go]")]
end

subgraph group_management["App management"]
  node_apps["Apps and metadata<br/>[apps.go]"]
  node_localizations["Localization<br/>[localizations.go]"]
end

subgraph group_insights["Commerce and insights"]
  node_analytics["Analytics reports<br/>[analytics.go]"]
  node_commerce["In-app purchases<br/>[iap.go]"]
  node_ads["Search ads<br/>[root.go]"]
end

node_operator(("Operator"))
node_apple{{"App Store Connect"}}
node_aws{{"AWS services"}}

node_operator -->|"invokes"| node_root
node_root -->|"dispatches"| node_run
node_run -->|"dispatches"| node_authcmd
node_run -->|"dispatches"| node_apps
node_run -->|"dispatches"| node_builds
node_run -->|"dispatches"| node_routing
node_run -->|"dispatches"| node_signing
node_run -->|"dispatches"| node_analytics
node_run -->|"dispatches"| node_commerce
node_run -->|"dispatches"| node_ads
node_authcmd -->|"persists credentials"| node_authstore
node_apps -->|"requests resources"| node_apiclient
node_localizations -->|"requests resources"| node_apiclient
node_builds -->|"requests builds"| node_apiclient
node_submission -->|"uses API client"| node_apiclient
node_routing -->|"requests coverage"| node_apiclient
node_releaseflow -->|"reads and uploads"| node_apiclient
node_releaseflow -->|"uses file operations"| node_routing
node_signing -->|"inspects packages"| node_artifacts
node_sync -->|"selects storage"| node_objectstore
node_objectstore -.->|"reads and writes"| node_aws
node_analytics -->|"requests reports"| node_apiclient
node_commerce -->|"manages purchases"| node_apiclient
node_ads -.->|"calls ads API"| node_apple
node_apiclient -->|"calls API"| node_apple
node_apps -->|"renders results"| node_output
node_routing -->|"renders results"| node_output

click node_root "https://github.com/rorkai/app-store-connect-cli/blob/main/cmd/root.go"
click node_run "https://github.com/rorkai/app-store-connect-cli/blob/main/cmd/run.go"
click node_authcmd "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/auth/auth.go"
click node_authstore "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/auth/keychain.go"
click node_apiclient "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/client_core.go"
click node_apps "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/apps/apps.go"
click node_localizations "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/localizations/localizations.go"
click node_builds "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/builds/builds.go"
click node_submission "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/review_submissions.go"
click node_routing "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/routingcoverage/routing_coverage.go"
click node_releaseflow "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/release/routing_coverage.go"
click node_artifacts "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/artifacts/inspect.go"
click node_signing "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/signing/signing_resign_pipeline.go"
click node_sync "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/signing/signing_sync_storage.go"
click node_objectstore "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/signing/objectstorage.go"
click node_analytics "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/analytics/analytics.go"
click node_commerce "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/iap/iap.go"
click node_ads "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/ads/root.go"
click node_output "https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/output_core.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root,node_run,node_output toneBlue
class node_authcmd,node_authstore,node_apiclient toneAmber
class node_builds,node_submission,node_routing,node_releaseflow,node_artifacts,node_signing,node_sync,node_objectstore toneMint
class node_apps,node_localizations toneRose
class node_analytics,node_commerce,node_ads,node_operator,node_apple,node_aws toneIndigo
```

## Components

### CLI entry

- [CLI root](https://github.com/rorkai/app-store-connect-cli/blob/main/cmd/root.go): `cmd/root.go`
- [Invocation runtime](https://github.com/rorkai/app-store-connect-cli/blob/main/cmd/run.go): `cmd/run.go`
- [Output rendering](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/output_core.go): `internal/asc/output_core.go`

### Access and API

- [Auth commands](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/auth/auth.go): `internal/cli/auth/auth.go`
- [Auth persistence](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/auth/keychain.go): `internal/auth/keychain.go`
- [ASC API client](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/client_core.go): `internal/asc/client_core.go`

### Release workflows

- [Builds and TestFlight](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/builds/builds.go): `internal/cli/builds/builds.go`
- [Review submissions](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/asc/review_submissions.go): `internal/asc/review_submissions.go`
- [Routing coverage](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/routingcoverage/routing_coverage.go): `internal/cli/routingcoverage/routing_coverage.go`
- [Release orchestration](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/release/routing_coverage.go): `internal/cli/release/routing_coverage.go`
- [Artifact handling](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/artifacts/inspect.go): `internal/artifacts/inspect.go`
- [Signing management](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/signing/signing_resign_pipeline.go): `internal/cli/signing/signing_resign_pipeline.go`
- [Signing sync](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/signing/signing_sync_storage.go): `internal/cli/signing/signing_sync_storage.go`
- [Remote object storage](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/signing/objectstorage.go): `internal/signing/objectstorage.go`

### App management

- [Apps and metadata](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/apps/apps.go): `internal/cli/apps/apps.go`
- [Localization](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/localizations/localizations.go): `internal/cli/localizations/localizations.go`

### Commerce and insights

- [Analytics reports](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/analytics/analytics.go): `internal/cli/analytics/analytics.go`
- [In-app purchases](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/iap/iap.go): `internal/cli/iap/iap.go`
- [Search ads](https://github.com/rorkai/app-store-connect-cli/blob/main/internal/cli/ads/root.go): `internal/cli/ads/root.go`

### Other components

- **Operator**
- **App Store Connect**
- **AWS services**

## Connections

- Operator → CLI root: invokes
- CLI root → Invocation runtime: dispatches
- Invocation runtime → Auth commands: dispatches
- Invocation runtime → Apps and metadata: dispatches
- Invocation runtime → Builds and TestFlight: dispatches
- Invocation runtime → Routing coverage: dispatches
- Invocation runtime → Signing management: dispatches
- Invocation runtime → Analytics reports: dispatches
- Invocation runtime → In-app purchases: dispatches
- Invocation runtime → Search ads: dispatches
- Auth commands → Auth persistence: persists credentials
- Apps and metadata → ASC API client: requests resources
- Localization → ASC API client: requests resources
- Builds and TestFlight → ASC API client: requests builds
- Review submissions → ASC API client: uses API client
- Routing coverage → ASC API client: requests coverage
- Release orchestration → ASC API client: reads and uploads
- Release orchestration → Routing coverage: uses file operations
- Signing management → Artifact handling: inspects packages
- Signing sync → Remote object storage: selects storage
- Remote object storage → AWS services: reads and writes
- Analytics reports → ASC API client: requests reports
- In-app purchases → ASC API client: manages purchases
- Search ads → App Store Connect: calls ads API
- ASC API client → App Store Connect: calls API
- Apps and metadata → Output rendering: renders results
- Routing coverage → Output rendering: renders results
