{"id":50358283,"url":"https://github.com/pollyglot/google-play-cli","last_synced_at":"2026-05-30T00:00:33.098Z","repository":{"id":358907760,"uuid":"1242920299","full_name":"PollyGlot/google-play-cli","owner":"PollyGlot","description":"Fast, lightweight CLI for the Google Play Developer API. Replaces Fastlane/Ruby on Android CI pipelines.","archived":false,"fork":false,"pushed_at":"2026-05-26T17:58:52.000Z","size":276,"stargazers_count":0,"open_issues_count":21,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T18:23:32.008Z","etag":null,"topics":["aab","android","ci-cd","cli","fastlane","fastlane-alternative","go","golang","google-play","gplay","play-console","play-store"],"latest_commit_sha":null,"homepage":"https://github.com/PollyGlot/google-play-cli","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PollyGlot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-18T22:11:05.000Z","updated_at":"2026-05-26T16:38:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"3575138f-f90d-41a8-b439-2ba6775a61fa","html_url":"https://github.com/PollyGlot/google-play-cli","commit_stats":null,"previous_names":["pollyglot/google-play-cli"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/PollyGlot/google-play-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PollyGlot%2Fgoogle-play-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PollyGlot%2Fgoogle-play-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PollyGlot%2Fgoogle-play-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PollyGlot%2Fgoogle-play-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PollyGlot","download_url":"https://codeload.github.com/PollyGlot/google-play-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PollyGlot%2Fgoogle-play-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33675019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aab","android","ci-cd","cli","fastlane","fastlane-alternative","go","golang","google-play","gplay","play-console","play-store"],"created_at":"2026-05-30T00:00:21.689Z","updated_at":"2026-05-30T00:00:33.090Z","avatar_url":"https://github.com/PollyGlot.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/marketing/header.png\" alt=\"gplay — standalone Go binary for the Google Play Developer API, built for CI, scripts, and AI agents\" width=\"720\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/PollyGlot/google-play-cli/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/PollyGlot/google-play-cli?include_prereleases\u0026style=for-the-badge\u0026color=blue\u0026label=release\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/PollyGlot/google-play-cli/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/PollyGlot/google-play-cli?style=for-the-badge\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.22+-00ADD8?style=for-the-badge\u0026logo=go\" alt=\"Go Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-pre--1.0-orange?style=for-the-badge\" alt=\"Status\"\u003e\n\u003c/p\u003e\n\n# gplay\n\nEvery team shipping an Android app eventually hits the same wall: Fastlane\n`supply` drags a Ruby runtime into your CI image, output meant for humans,\nand generic exit codes that make retry logic guesswork. `gplay` is what\nyou'd build today if you started fresh — one static binary, no runtime,\nJSON output that matches the Google Play Developer API verbatim, semantic\nexit codes, safe production defaults.\n\n\u003e **Public preview — pre-1.0.** The full MVP surface is implemented: auth,\n\u003e apps, releases, tracks, and reviews. This is an invitation to test and give\n\u003e feedback — breaking changes are still possible before `v1.0`, where\n\u003e per-command stability labels will mark what's frozen. See\n\u003e [docs/BACKLOG.md](docs/BACKLOG.md) for what's intentionally out of scope and\n\u003e [ADR-0010](docs/adr/0010-versioning-public-contract-and-ga.md) for the\n\u003e versioning policy.\n\n## Why\n\n- **Standalone Go binary.** No Ruby, no Node, no Python — one file in your CI\n  image.\n- **Built for CI and agents.** TTY-aware output (`table` by default, `json`\n  in pipes), explicit flags, semantic exit codes for retry decisions.\n- **API-faithful.** `--output json` returns the raw Google Play Developer\n  API response shape — no custom envelope to learn. The Google docs *are* the\n  schema docs.\n- **Safe by default on production.** Uploading or promoting to the\n  `production` track creates a `draft` release unless you explicitly\n  `--complete` or `--staged \u003cfraction\u003e`.\n  See [ADR-0002](docs/adr/0002-safe-production-defaults.md).\n\n## Install\n\nAll install methods are live: `go install`, Homebrew, the install script, and\npre-built binaries for Linux, macOS, and Windows on the\n[releases page](https://github.com/PollyGlot/google-play-cli/releases).\n\n```bash\n# go install\ngo install github.com/PollyGlot/google-play-cli/cmd/gplay@latest\n\n# Homebrew\nbrew install PollyGlot/tap/gplay\n\n# Install script\ncurl -fsSL https://raw.githubusercontent.com/PollyGlot/google-play-cli/main/install.sh | sh\n```\n\n## Quick start\n\n```bash\n# Point gplay at a Google Cloud service account JSON.\ngplay auth login --service-account ./service_account.json\n\n# List configured accounts and see which one is active.\ngplay auth list\ngplay auth status\n\n# Verify the SA actually has access to your app.\ngplay auth doctor --package com.example.myapp\n\n# Bootstrap a project-local config (cascading: project → user → defaults).\ngplay init\n```\n\nFull command reference: `gplay --help` (or `gplay \u003csubcommand\u003e --help`).\n\n### The Fastlane-replacement surface\n\nThese all work today (public preview):\n\n```bash\n# Upload an AAB to the internal track, with localized release notes.\ngplay releases upload app.aab \\\n  --package com.example.myapp \\\n  --track internal \\\n  --release-notes-dir ./whatsnew\n\n# Promote the latest internal build to beta.\ngplay releases promote --package com.example.myapp --from internal --to beta\n\n# Stage a production rollout, then advance it.\ngplay releases rollout --package com.example.myapp --track production --to 0.10\n\n# Read the most recent reviews (API exposes the last 7 days only) and reply.\ngplay reviews list --package com.example.myapp --stars 1-2\ngplay reviews reply --review-id REVIEW_ID --reply \"Thanks for the feedback!\"\n```\n\nSee [docs/BACKLOG.md](docs/BACKLOG.md) for the full roadmap and what is\nintentionally out of scope.\n\n## How it's set up\n\nThe repo is documentation-first by design. Before writing significant code,\nthe decisions are pinned in place so contributors and agents converge:\n\n- [**CLAUDE.md**](CLAUDE.md) — project context and roadmap.\n- [**AGENTS.md**](AGENTS.md) — instructions for AI agents working in this\n  repo. Reads CLAUDE.md, CONTEXT.md, DESIGN.md before generating code.\n- [**CONTEXT.md**](CONTEXT.md) — glossary of canonical terms (Edit,\n  Account, Project, ...). Use them verbatim.\n- [**docs/DESIGN.md**](docs/DESIGN.md) — CLI conventions across commands\n  (auth precedence, exit codes, output format, verbosity, edit lifecycle).\n- [**docs/BACKLOG.md**](docs/BACKLOG.md) — explicitly out-of-scope features.\n- [**docs/CI_CD.md**](docs/CI_CD.md) — how to wire `gplay` into a CI\n  pipeline (GitHub Actions example).\n- [**docs/adr/**](docs/adr/) — Architecture Decision Records.\n\n## Skills repo (planned)\n\nAgent skills that drive `gplay` from natural-language prompts will live in a\ncompanion repo: `PollyGlot/google-play-cli-skills`. Each skill is a folder\nwith a `SKILL.md` file that documents the intent, the gplay commands it\nruns, and the safety rails it enforces.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). TL;DR: open an issue first for\nanything bigger than a typo, branch from `main`, open a PR.\n\n## License\n\n[MIT](LICENSE) — © 2026 Pavlo Trinko and contributors.\n\n## Not affiliated with Google\n\n`gplay` is an independent open-source project. It uses the public Google\nPlay Developer API and is not endorsed by, affiliated with, or sponsored by\nGoogle LLC. \"Google Play\" is a trademark of Google LLC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpollyglot%2Fgoogle-play-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpollyglot%2Fgoogle-play-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpollyglot%2Fgoogle-play-cli/lists"}