An open API service indexing awesome lists of open source software.

https://github.com/pollyglot/google-play-cli

Fast, lightweight CLI for the Google Play Developer API. Replaces Fastlane/Ruby on Android CI pipelines.
https://github.com/pollyglot/google-play-cli

aab android ci-cd cli fastlane fastlane-alternative go golang google-play gplay play-console play-store

Last synced: 17 days ago
JSON representation

Fast, lightweight CLI for the Google Play Developer API. Replaces Fastlane/Ruby on Android CI pipelines.

Awesome Lists containing this project

README

          


gplay — standalone Go binary for the Google Play Developer API, built for CI, scripts, and AI agents


Latest Release
GitHub Stars
Go Version
License
Status

# gplay

Every team shipping an Android app eventually hits the same wall: Fastlane
`supply` drags a Ruby runtime into your CI image, output meant for humans,
and generic exit codes that make retry logic guesswork. `gplay` is what
you'd build today if you started fresh — one static binary, no runtime,
JSON output that matches the Google Play Developer API verbatim, semantic
exit codes, safe production defaults.

> **Public preview — pre-1.0.** The full MVP surface is implemented: auth,
> apps, releases, tracks, and reviews. This is an invitation to test and give
> feedback — breaking changes are still possible before `v1.0`, where
> per-command stability labels will mark what's frozen. See
> [docs/BACKLOG.md](docs/BACKLOG.md) for what's intentionally out of scope and
> [ADR-0010](docs/adr/0010-versioning-public-contract-and-ga.md) for the
> versioning policy.

## Why

- **Standalone Go binary.** No Ruby, no Node, no Python — one file in your CI
image.
- **Built for CI and agents.** TTY-aware output (`table` by default, `json`
in pipes), explicit flags, semantic exit codes for retry decisions.
- **API-faithful.** `--output json` returns the raw Google Play Developer
API response shape — no custom envelope to learn. The Google docs *are* the
schema docs.
- **Safe by default on production.** Uploading or promoting to the
`production` track creates a `draft` release unless you explicitly
`--complete` or `--staged `.
See [ADR-0002](docs/adr/0002-safe-production-defaults.md).

## Install

All install methods are live: `go install`, Homebrew, the install script, and
pre-built binaries for Linux, macOS, and Windows on the
[releases page](https://github.com/PollyGlot/google-play-cli/releases).

```bash
# go install
go install github.com/PollyGlot/google-play-cli/cmd/gplay@latest

# Homebrew
brew install PollyGlot/tap/gplay

# Install script
curl -fsSL https://raw.githubusercontent.com/PollyGlot/google-play-cli/main/install.sh | sh
```

## Quick start

```bash
# Point gplay at a Google Cloud service account JSON.
gplay auth login --service-account ./service_account.json

# List configured accounts and see which one is active.
gplay auth list
gplay auth status

# Verify the SA actually has access to your app.
gplay auth doctor --package com.example.myapp

# Bootstrap a project-local config (cascading: project → user → defaults).
gplay init
```

Full command reference: `gplay --help` (or `gplay --help`).

### The Fastlane-replacement surface

These all work today (public preview):

```bash
# Upload an AAB to the internal track, with localized release notes.
gplay releases upload app.aab \
--package com.example.myapp \
--track internal \
--release-notes-dir ./whatsnew

# Promote the latest internal build to beta.
gplay releases promote --package com.example.myapp --from internal --to beta

# Stage a production rollout, then advance it.
gplay releases rollout --package com.example.myapp --track production --to 0.10

# Read the most recent reviews (API exposes the last 7 days only) and reply.
gplay reviews list --package com.example.myapp --stars 1-2
gplay reviews reply --review-id REVIEW_ID --reply "Thanks for the feedback!"
```

See [docs/BACKLOG.md](docs/BACKLOG.md) for the full roadmap and what is
intentionally out of scope.

## How it's set up

The repo is documentation-first by design. Before writing significant code,
the decisions are pinned in place so contributors and agents converge:

- [**CLAUDE.md**](CLAUDE.md) — project context and roadmap.
- [**AGENTS.md**](AGENTS.md) — instructions for AI agents working in this
repo. Reads CLAUDE.md, CONTEXT.md, DESIGN.md before generating code.
- [**CONTEXT.md**](CONTEXT.md) — glossary of canonical terms (Edit,
Account, Project, ...). Use them verbatim.
- [**docs/DESIGN.md**](docs/DESIGN.md) — CLI conventions across commands
(auth precedence, exit codes, output format, verbosity, edit lifecycle).
- [**docs/BACKLOG.md**](docs/BACKLOG.md) — explicitly out-of-scope features.
- [**docs/CI_CD.md**](docs/CI_CD.md) — how to wire `gplay` into a CI
pipeline (GitHub Actions example).
- [**docs/adr/**](docs/adr/) — Architecture Decision Records.

## Skills repo (planned)

Agent skills that drive `gplay` from natural-language prompts will live in a
companion repo: `PollyGlot/google-play-cli-skills`. Each skill is a folder
with a `SKILL.md` file that documents the intent, the gplay commands it
runs, and the safety rails it enforces.

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md). TL;DR: open an issue first for
anything bigger than a typo, branch from `main`, open a PR.

## License

[MIT](LICENSE) — © 2026 Pavlo Trinko and contributors.

## Not affiliated with Google

`gplay` is an independent open-source project. It uses the public Google
Play Developer API and is not endorsed by, affiliated with, or sponsored by
Google LLC. "Google Play" is a trademark of Google LLC.