Setup

Get the keys once. Then stop thinking about them.

Nitro Shot talks to each store through its own API, so it needs a credential per store. Each one takes a few minutes in that store's console. Paste them on the Publish tab; they are stored on your machine only. The same values work for the CLI, the MCP server and CI.

App Store

about 5 min
  1. 1

    Open App Store Connect → Users and Access → Integrations → App Store Connect API → Team Keys.

  2. 2

    Click +, name it "Nitro Shot", role App Manager (Developer cannot upload screenshots).

  3. 3

    Download the .p8. Apple only offers it once; if you lose it, revoke and make a new key.

  4. 4

    Copy the Key ID from the row and the Issuer ID from the top of the page.

  5. 5

    In Nitro Shot: Publish → App Store → paste Key ID and Issuer ID, pick the .p8, Save. Verify lists your apps.

Screenshots upload only into a version in an editable state (Prepare for Submission). Create the version in App Store Connect first.

Google Play

about 10 min
  1. 1

    Google Cloud Console → create or pick a project → APIs & Services → enable "Google Play Android Developer API".

  2. 2

    IAM & Admin → Service Accounts → Create. No roles needed. Keys → Add key → JSON. Download it.

  3. 3

    Play Console → Users and permissions → Invite new users → paste the service account email.

  4. 4

    App permissions: pick your app, grant "Manage store presence" (and "Manage production releases" if Nitro Shot should submit).

  5. 5

    In Nitro Shot: Publish → Google Play → choose the JSON, enter the package name, Save. The first API call can take up to 24 hours to be authorised after inviting the account.

Huawei AppGallery

about 10 min
  1. 1

    AppGallery Connect → Users and permissions → API key → Connect API → Create.

  2. 2

    Name it, project: N/A (team level) so one key covers every app, role Administrator or App administrator.

  3. 3

    Copy Client ID and Key (the secret) now; the secret is not shown again.

  4. 4

    My apps → your app → App information → copy the App ID.

  5. 5

    In Nitro Shot: Publish → AppGallery → paste the three values, Save, Verify.

Amazon Appstore

about 10 min
  1. 1

    Developer Console → Settings → Security Profiles → Create a New Security Profile, name it "Nitro Shot".

  2. 2

    Open the profile → Web Settings → copy Client ID and Client Secret.

  3. 3

    Apps & Services → App Submission API → attach the profile to your developer account (one time).

  4. 4

    Apps & Services → My Apps → your app → copy the App ID from the dashboard header.

  5. 5

    In Nitro Shot: Publish → Amazon → paste the three values, Save, Verify. Uploads go into an open Edit; "Commit" submits it.

Microsoft Store

about 15 min
  1. 1

    Partner Center → Account settings → User management → Microsoft Entra applications → Add Microsoft Entra application.

  2. 2

    Create a new application (or pick an existing one), role Manager. Partner Center shows the Tenant ID and Client ID.

  3. 3

    On the application row → Add new key → copy the key (the secret). It is shown once.

  4. 4

    Apps and games → your app → Product management → Product identity → copy the Store ID.

  5. 5

    In Nitro Shot: Publish → Microsoft Store → paste the four values, Save, Verify. Uploads create a submission; "Commit" sends it to certification.

Local tools for capture and captions

Capture drives real simulators and emulators, so the platform tools have to exist on the machine. The Capture tab lists what it found under Tools on this machine.

Xcode + simulators

  1. Install Xcode from the Mac App Store, open it once and accept the licence.
  2. Xcode → Settings → Components → download the iOS runtime you ship for.
  3. Window → Devices and Simulators → add the simulators Nitro Shot lists under Devices.
developer.apple.com/xcode/

Android Studio + emulators

  1. Install Android Studio and the SDK platform-tools (adb) and emulator.
  2. Device Manager → Create device → a Pixel with a recent system image.
  3. Add platform-tools and emulator to PATH, or set ANDROID_HOME.
developer.android.com/studio

Maestro (taps)

  1. Only needed for screens a deep link cannot reach.
  2. curl -Ls https://get.maestro.mobile.dev | bash
  3. Restart the app so it appears under Tools on this machine.
maestro.mobile.dev

ffmpeg (previews)

  1. brew install ffmpeg on macOS; winget install ffmpeg on Windows.
ffmpeg.org

Ollama (local captions)

  1. Install Ollama, then ollama pull llama3.2.
  2. Nitro Shot finds it at 127.0.0.1:11434 automatically.
ollama.com

Claude (optional)

  1. Create an API key in the Anthropic console.
  2. Set ANTHROPIC_API_KEY in your shell before launching, or in the CI environment.
console.anthropic.com

One file for the CLI, the server and CI

The app writes ~/.nss/credentials.json (mode 0600). nss, nss-mcp and the GitHub Action read the same file, or NSS_CREDENTIALS_FILE if you point it elsewhere. In CI, pass the file content as one secret to the action's credentials input.

Store keys never leave your machine unless you use the hosted web app, where they are encrypted at rest with a key you control through the worker secret.

How agents use them
~/.nss/credentials.json
{
  "asc":     { "key_id": "ABC123DEFG", "issuer_id": "00000000-0000-0000-0000-000000000000", "private_key_pem": "-----BEGIN PRIVATE KEY-----\n…" },
  "play":    { "service_account_json": "{…}", "package_name": "com.example.app" },
  "huawei":  { "client_id": "…", "client_secret": "…", "app_id": "123456789" },
  "amazon":  { "client_id": "amzn1.application-oa2-client.…", "client_secret": "…", "app_id": "amzn1.devportal.apps.…" },
  "msstore": { "tenant_id": "…", "client_id": "…", "client_secret": "…", "app_id": "9NBLGGH…" }
}