Skip to content

yasserstudio/gpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

576 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

GPC icon

by
Yasser's Studio

GPC - Google Play Console CLI

GPC is a command-line interface for the Google Play Developer API that covers all 217 API endpoints from a single binary. It handles releases, rollouts, store listings, vitals monitoring, reviews, subscriptions, reports, and Managed Google Play publishing without requiring Ruby, a JVM, or a browser. Built for Android developers, release engineers, and DevOps teams who ship from the terminal.

GPC also includes an offline compliance scanner that catches Google Play policy violations before you upload, and a real-time rollout monitor that auto-halts on crash rate spikes.

npm version GitHub Stars TypeScript Node.js Free to use npm downloads Documentation Tests Coverage

Install in 30 seconds · Quick Start Guide · GitHub


Install

# npm (includes plugin support)
npm install -g @gpc-cli/cli

# Homebrew (macOS/Linux)
brew install yasserstudio/tap/gpc

# Standalone binary — macOS/Linux (no Node.js required)
curl -fsSL https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.sh | sh

# Standalone binary — Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.ps1 | iex

Free to use. No account required beyond your existing Google Play service account.


How to Ship an Android Release from the Terminal

  1. Install GPC - npm install -g @gpc-cli/cli (also available via Homebrew or standalone binary)
  2. Set up - Run gpc setup for guided first-time configuration (or gpc setup --auto in CI), or authenticate manually: gpc auth login --service-account path/to/key.json
  3. Verify your setup - gpc doctor runs 20+ automated checks on auth, config, and connectivity
  4. Check app health - gpc status shows releases, vitals, and reviews in one view
  5. Upload your build - gpc releases upload app.aab --track internal
  6. Promote to production - gpc releases promote --from internal --to production --rollout 10
  7. Monitor the rollout - gpc watch --on-breach halt tracks crash rates and auto-halts on threshold breach
  8. Check reviews - gpc reviews list --stars 1-3 --since 7d

gpc status — releases, vitals, reviews at a glance


Why GPC?

Every Android release is the same ritual: open the Play Console, upload your AAB, copy-paste release notes, pick a track, set the rollout percentage, click through confirmation screens. Fifteen minutes of clicking, every single time.

GPC covers the entire Google Play Developer API in one CLI. 217 endpoints. No Ruby. No browser. No ceremony.

GPC Fastlane supply gradle-play-publisher Console UI
API coverage 217 endpoints ~20 ~15 All (manual)
Runtime Node.js or standalone binary Ruby + Bundler JVM Browser
Cold start <500ms 2-3s 3-5s 5-10s
Reviews & Vitals Yes No No Yes (manual)
Subscriptions & IAP Yes No No Yes (manual)
Managed Google Play Yes (first CLI to support) No No Yes (manual)
CI/CD native JSON + exit codes + env vars Partial Gradle tasks No
Preflight scanner 9 offline policy checks No No No
Interactive mode Yes (guided prompts) No No N/A
Test suite 2,269 tests, 90%+ coverage

Already on Fastlane? See the migration guide — most commands map one-to-one.


Ship

From first upload to full production rollout, without touching a browser.

gpc publish app.aab --track beta --notes "Bug fixes"      # End-to-end flow
gpc releases upload app.aab --track internal               # Upload to any track
gpc releases promote --from beta --to production --rollout 5
gpc releases rollout increase --track production --to 50
gpc releases rollout halt --track production               # Emergency brake
gpc validate app.aab --track beta                          # Dry-run before committing
gpc publish app.aab --track beta --validate-only           # Validate without creating a release

Manage store listings, screenshots, and localization. Works with Fastlane metadata format.

gpc listings pull --dir metadata/          # Download all listings
gpc listings push --dir metadata/          # Upload local changes
gpc listings images upload --lang en-US --type phoneScreenshots ./screens/*.png

Release Notes

From git log to translated Play Store release notes, in one command.

# GitHub Release markdown from your commits — clusters, lints, LLM prompt
gpc changelog generate                                     # paste into the GH Release body
gpc changelog generate | gh release create v1.2.3 -F -    # one-command release

# Per-locale Play Store "What's new" text (500-char budget enforced per locale)
gpc changelog generate --target play-store --locales auto

# Translate non-source locales via your own LLM key (BYO — no vendor lock-in)
gpc changelog generate --target play-store --locales auto --ai

--ai auto-detects whichever provider key is set: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, or AI_GATEWAY_API_KEY for the Vercel AI Gateway (20+ providers plus cost-per-run in USD). Non-reasoning model defaults so you don't pay for thinking tokens on a translation task.

Multilingual release notes guide · Generating release notes guide


Monitor

Know if something broke before your users do.

gpc status                                 # Releases + vitals + reviews in one view
gpc status --watch 60                      # Live polling every 60 seconds
gpc status --all-apps                      # Check all your apps at once
gpc watch --track production               # Real-time rollout monitoring with alerts
gpc watch --on-breach halt                 # Auto-halt rollout on threshold breach
gpc vitals crashes --threshold 2.0         # Exit code 6 if breached — CI gate
gpc reviews list --stars 1-2 --since 7d    # Filter reviews by stars and date
gpc reviews reply <id> --text "Thanks!"    # Reply without opening a browser

Handle monetization from the terminal.

gpc subscriptions list
gpc iap sync --dir products/
gpc pricing convert --from USD --amount 9.99

Protect

Catch problems before Google does. No other tool does this.

gpc preflight app.aab                        # Run all 9 scanners
gpc preflight app.aab --fail-on error --json # CI quality gate (exit code 6)
gpc preflight permissions app.aab            # 18 restricted permissions audit
gpc preflight --source app/src               # Secrets, billing SDKs, tracking

9 scanners run in parallel: manifest (target SDK, debuggable, exported, foreground service types), permissions (18 restricted permissions), native-libs (64-bit compliance), metadata (listing limits, screenshots), secrets (AWS, Google, Stripe keys), billing (non-Play SDKs), privacy (tracking SDKs), policy (Families/COPPA), size (download warnings).

gpc preflight — 9 offline compliance scanners

Check your developer verification readiness before enforcement begins (September 30, 2026).

gpc verify                              # Account-aware verification status
gpc verify checklist                    # Interactive readiness walkthrough
gpc doctor --verify                     # Signing key fingerprint comparison
gpc preflight signing                   # Signing cert consistency across releases

Diagnose your setup with 20+ automated checks.

gpc doctor                  # Run all checks
gpc doctor --fix            # Auto-fix what it can
gpc doctor --json           # Structured output for CI

Analyze bundle size and catch regressions.

gpc bundle analyze app.aab                   # Per-module breakdown
gpc bundle compare old.aab new.aab           # Size diff between builds
gpc bundle analyze app.aab --threshold 150   # CI gate if > 150 MB

CI/CD

Drop GPC into any pipeline. JSON output, semantic exit codes (0-6), env var config.

GitHub Actions

- name: Install GPC
  run: npm install -g @gpc-cli/cli

- name: Preflight Compliance Check
  run: gpc preflight app.aab --fail-on error

- name: Upload to Internal Track
  env:
    GPC_SERVICE_ACCOUNT: ${{ secrets.GPC_SERVICE_ACCOUNT }}
    GPC_APP: com.example.myapp
  run: gpc releases upload app.aab --track internal

- name: Gate on Vitals
  run: |
    gpc vitals crashes --output json | jq -e '.data.crashRate < 2.0'

GitLab CI

deploy:
  image: node:20
  script:
    - npm install -g @gpc-cli/cli
    - gpc releases upload app.aab --track production --rollout 10
  variables:
    GPC_SERVICE_ACCOUNT: $GPC_SERVICE_ACCOUNT
    GPC_APP: com.example.myapp

Exit Codes

Code Meaning
0 Success
1 General error
2 Usage error (bad arguments)
3 Authentication error
4 API error (rate limit, permission)
5 Network error
6 Threshold breach (vitals CI alerting)

See the full CI/CD recipes for GitHub Actions, GitLab CI, Bitbucket Pipelines, and CircleCI.


Developer Experience

  • Smart output - formatted tables in your terminal, structured JSON when piped or in CI. Override with --output json|yaml|markdown|csv|tsv.
  • Guided setup - gpc setup walks you through first-time configuration. Use gpc setup --auto for unattended CI provisioning.
  • Dry run everything - every write command supports --dry-run. Run your full pipeline against real data without publishing a thing.
  • Validate without committing - --validate-only on publish and release commands checks everything server-side without creating a release.
  • Interactive prompts - miss a required flag and GPC asks. In CI, it fails fast instead. Disable with --no-interactive.
  • Four auth methods - service account, OAuth, env var, or Application Default Credentials.
  • Multiple accounts - gpc auth profiles, gpc auth switch, gpc auth whoami.

Packages

GPC is a TypeScript monorepo. Use the CLI from your terminal, or import the packages into your own projects as a standalone SDK.

Package Description
@gpc-cli/cli CLI entry point — the gpc command
@gpc-cli/core Business logic and command orchestration
@gpc-cli/api Typed Google Play Developer API v3 client
@gpc-cli/auth Authentication (service account, OAuth, ADC)
@gpc-cli/config Configuration loading and profiles
@gpc-cli/plugin-sdk Plugin interface for extensions
@gpc-cli/plugin-ci CI/CD helpers and step summaries

See the SDK usage guide for building custom integrations with @gpc-cli/api.


Documentation

Full docs at yasserstudio.github.io/gpc.


Get Help

  • GitHub Discussions — questions, ideas, show what you built
  • Issues — bug reports and feature requests
  • gpc doctor — diagnose setup problems locally

FAQ

Is GPC free? Yes. GPC is free to use. The code is on GitHub. No subscription, no usage limits, no account required beyond your existing Google Play developer account and service account key.

Does GPC replace Fastlane for Android? For Google Play, yes. GPC covers 217 API endpoints compared to Fastlane supply's ~20. It handles vitals, reviews, subscriptions, Managed Google Play, and offline compliance scanning, none of which Fastlane supports. See the migration guide for a command-by-command mapping.

Can GPC create new apps on Google Play? No. Google Play does not offer an API endpoint to create apps. You create the app once in the Play Console UI, then GPC handles the entire lifecycle after that: uploads, releases, rollouts, metadata, vitals, reviews, and more.

Does GPC work in CI/CD pipelines? Yes. Every command supports --json output and uses semantic exit codes (0-6). Authenticate with a service account key via environment variable. See the CI/CD recipes for GitHub Actions, GitLab CI, Bitbucket Pipelines, and CircleCI.

What is the preflight scanner? gpc preflight runs 9 offline scanners against your AAB or APK before you upload it. It checks target SDK, restricted permissions, 64-bit compliance, data safety, secrets in code, non-Play billing SDKs, tracking libraries, Families/COPPA policy, and download size. Catches rejection reasons before Google does.

Does GPC support Managed Google Play (enterprise)? Yes. GPC is the first command-line tool to support the Play Custom App Publishing API. gpc enterprise publish creates and updates private apps for Managed Google Play without touching a browser.


License

Free to use. The code is on GitHub. See LICENSE for legal details.


Star History

Star History Chart


Yasser's Studio

Made by Yasser's Studio · LinkedIn · X · hello@yasser.studio

GPC is an independent project. Not affiliated with, endorsed by, or sponsored by Google LLC. "Google Play" and the Google Play logo are trademarks of Google LLC. "Android" and "Google" are trademarks of Google LLC.