> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Releases & staged rollouts with gps

> Upload AAB or APK builds, promote releases between tracks, and control staged rollouts on Google Play.

Set the package once per command with `--package` (or `-p`), or rely on the account's default package.

## Deploy a build

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app deploy \
  --file ./app-release.aab \
  --track internal \
  --release-notes "Bug fixes" \
  --confirm
```

| Flag | Description |
| - | - |
| `--file <path>` | Path to the `.aab` or `.apk` (required) |
| `--track <track>` | `internal`, `alpha`, `beta`, `production`, or a custom track (required) |
| `--user-fraction <n>` | Staged rollout fraction, `0`–`1` |
| `--release-notes <text>` | Release notes |
| `--language <lang>` | Release notes language (default `en-US`) |
| `--validate-only` | Validate the edit without committing it |

> [!NOTE]
>
> Uploads need a local file, so `deploy` is CLI-only. On the hosted MCP you can still promote, roll out, and halt releases that are already uploaded.

## Inspect tracks

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app tracks list --json
gps --package com.example.app tracks get production
gps --package com.example.app tracks releases production --version-code 123 --json
```

`tracks releases` reads each release's lifecycle state without opening an edit. Match the exact version code in release gates.

> [!WARNING]
>
> `RELEASE_LIFECYCLE_STATE_APPROVED_NOT_PUBLISHED` means Google approved the release but it is waiting for you. The Android Publisher API cannot do this final step, so publish the changes in Play Console.

## Promote between tracks

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app tracks promote --from internal --to beta --confirm
gps --package com.example.app tracks promote --from beta --to production --user-fraction 0.05 --confirm
```

## Staged rollout

**1. Start small**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app tracks rollout production --user-fraction 0.1 --confirm
```

**2. Widen**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app tracks rollout production --user-fraction 0.5 --confirm
```

**3. Halt if something breaks**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app tracks halt production --confirm
```

`promote`, `rollout`, and `halt` all accept `--validate-only`.

## Testers and internal sharing

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app testers get internal
gps --package com.example.app testers update internal --google-groups qa@googlegroups.com --confirm
gps --package com.example.app internal-sharing upload --file ./app.aab --confirm
```

## Operations

| Operation | What it does | Hosted |
| - | - | - |
| `gps_list_tracks`, `gps_get_track` | Read tracks and their releases | Yes |
| `gps_list_track_releases` | Releases on one track | Yes |
| `gps_list_release_summaries` | Release lifecycle states (filter by `versionCode`) | Yes |
| `gps_promote_release` | Promote from one track to another | Yes (write) |
| `gps_update_rollout` | Change the staged rollout fraction | Yes (write) |
| `gps_halt_release` | Halt a staged rollout | Yes (write) |
| `gps_update_track` | Replace a track's releases with a raw `body` | Yes (write) |
| `gps_get_testers`, `gps_update_testers` | Track testers (Google Groups) | Yes |
| `gps_deploy_app` | Upload and assign to a track | CLI only |
| `gps_upload_bundle`, `gps_upload_apk` | Upload into an edit | CLI only |
| `gps_upload_internal_sharing` | Internal app sharing upload | CLI only |

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps call gps_list_release_summaries '{"packageName":"com.example.app","track":"production","versionCode":123}'
```

Over MCP, an agent can run the same flow: `gps_list_tracks` → `gps_update_rollout` → `gps_halt_release`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.