MCPcopy Index your code
hub / github.com/dl-alexandre/Google-Play-Developer-CLI

github.com/dl-alexandre/Google-Play-Developer-CLI @v0.6.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.6.4 ↗ · + Follow
2,748 symbols 11,063 edges 127 files 1,402 documented · 51%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

gpd – Google Play Developer CLI

The fast, lightweight, zero-Ruby alternative to Fastlane for Google Play Console.

Go Report Card Release CI Go Version Platforms Downloads License Stars

  • Sub-200ms cold start — no Ruby VM bloat, instant even on slow CI runners
  • 🖥️ JSON-first output — built for AI agents, scripts, and automation (predictable exit codes, no parsing HTML)
  • 🔒 Secure by default — platform keystore + PII redaction, never leak service account keys
  • Full Play Console coverage — publishing, reviews, analytics, vitals, monetization, integrity + 61+ commands
  • 🛠️ Cross-platform — macOS, Linux, Windows via Homebrew, curl, or Go install

If Fastlane feels heavy/slow, gpd gives you the same power with a tiny footprint and modern DX.

Quick Install →


gpd vs Fastlane

Feature gpd (Google-Play-Developer-CLI) Fastlane (supply)
Cold start time <200ms 2–10s+ (Ruby boot)
Runtime footprint ~10–20 MB 100+ MB + gems
Language / Deps Go – single binary Ruby + heavy dependencies
Output format JSON-first, machine-readable Human text + plugins
AI/Script friendliness Designed for agents (exit codes, structured) Requires parsing plugins
Credential security Platform store + redaction Manual JSON key handling
Play API coverage Full (publishing, reviews, analytics, monetization, integrity…) Good, but fragmented actions
Install size / ease Homebrew / curl / go install gem install + bundle
Windows support Native WSL or painful

Choose gpd when you want speed, security, and scriptability without the Ruby tax.


Quick Install

# macOS/Linux via Homebrew (10 seconds)
brew tap dl-alexandre/tap && brew install gpd

# OR macOS/Linux via curl
curl -fsSL https://raw.githubusercontent.com/dl-alexandre/Google-Play-Developer-CLI/main/install.sh | bash

# OR via Go
go install github.com/dl-alexandre/Google-Play-Developer-CLI/cmd/gpd@latest

View all installation options →


Quick Start

# 1. Authenticate once (service account JSON)
gpd auth login --key service-account.json

# 2. Verify setup
gpd auth check --package com.example.app

# 3. Upload AAB to internal track – JSON output ready for scripts
gpd publish upload myapp.aab --package com.example.app --track internal --json

Full auth guide →


Why gpd Over Fastlane?

Click to see why developers are switching

Speed That Matters

  • Cold start in <200ms vs Ruby's 2–10s boot time
  • CI pipelines finish faster, saving compute costs
  • Instant feedback during development

Built for Modern Workflows

  • JSON-first output designed for AI agents and automation
  • Predictable exit codes for reliable scripting
  • No browser-based auth interruptions

Security-First Design

  • Credentials stored in platform keychain (macOS Keychain, Linux Secret Service, Windows Credential Manager)
  • Automatic PII redaction from all logs
  • Service account keys never touch disk unencrypted

Zero Dependencies

  • Single static binary—no gemfile nightmares
  • Works on Windows natively (no WSL required)
  • Same behavior everywhere

Full API Coverage

61+ commands covering: - App publishing and release management - Review monitoring and replies - Android Vitals (crashes, ANRs) - Monetization (IAPs, subscriptions) - Play Integrity API - Play Games Services - Custom app publishing - User permissions management


AI Agent Integration

gpd is purpose-built for programmatic access by AI agents and automation:

# Get the AI agent quickstart guide
gpd help agent

# Example: Query reviews and get structured JSON for processing
gpd reviews list --package com.example.app --min-rating 1 --output json --pretty

Key features for automation:

  • Minified JSON by default — single-line output for easy parsing
  • Predictable exit codes — 0=success, 1-8=specific error types
  • Explicit flags — no interactive prompts to hang scripts
  • No browser auth — fully headless operation
  • Dry-run mode — plan operations safely with --dry-run

Sample JSON Output

{
  "data": {
    "reviews": [
      {
        "reviewId": "12345",
        "authorName": "Jane D.",
        "comments": [{"text": "Great app!"}],
        "starRating": 5
      }
    ]
  },
  "error": null,
  "meta": {
    "durationMs": 145,
    "services": ["androidpublisher"],
    "nextPageToken": null,
    "warnings": []
  }
}

Features

  • Fast: Sub-200ms cold start, minimal memory usage
  • AI-Agent Friendly: JSON-first output, predictable exit codes, explicit flags
  • Secure: Platform-specific credential storage, comprehensive PII redaction
  • Cross-Platform: Native macOS, Linux, and Windows support
  • Comprehensive: Full API coverage for publishing, reviews, analytics, and monetization

Installation

Quick Install

# One-liner for macOS/Linux
brew tap dl-alexandre/tap && brew install gpd

Homebrew (macOS/Linux)

brew tap dl-alexandre/tap
brew install gpd

Install Script (macOS/Linux)

curl -fsSL https://raw.githubusercontent.com/dl-alexandre/Google-Play-Developer-CLI/main/install.sh | bash

Go Install

go install github.com/dl-alexandre/Google-Play-Developer-CLI/cmd/gpd@latest

Download Binary

Download the latest release from the Releases page.

Build from Source

git clone https://github.com/dl-alexandre/Google-Play-Developer-CLI.git
cd Google-Play-Developer-CLI
make build

Authentication

Create a service account in Google Cloud Console with the Google Play Android Publisher API enabled, then:

# Option 1: Environment variable
export GPD_SERVICE_ACCOUNT_KEY='{"type": "service_account", ...}'

# Option 2: Key file
gpd --key /path/to/service-account.json auth status

# Option 3: Application Default Credentials
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
gpd auth status

Verify Setup

# Check authentication status
gpd auth status

# Check permissions for a specific app
gpd auth check --package com.example.app

# Diagnose configuration issues
gpd config doctor

Command Reference

Global Flags

Flag Description Default
--package App package name -
--output Output format: json, table, markdown, csv (analytics/vitals only) json
--pretty Pretty print JSON output false
--timeout Network timeout 30s
--key Service account key file path -
--quiet Suppress stderr except errors false
--verbose Verbose output false
--profile Authentication profile name -
--store-tokens Token storage: auto, never, secure auto
--fields JSON field projection (comma-separated paths) -
-v, --version Print version information false

Command Namespaces

gpd auth - Authentication

gpd auth login              # OAuth device login (uses GPD_CLIENT_ID)
gpd auth init               # Alias for auth login
gpd auth switch <profile>   # Switch active profile
gpd auth list               # List stored profiles
gpd auth status              # Check authentication status
gpd auth check --package ... # Validate permissions
gpd auth logout              # Clear stored credentials
gpd auth diagnose            # Detailed auth diagnostics
gpd auth doctor              # Diagnose authentication setup

If your OAuth consent screen is in testing mode, refresh tokens can expire after 7 days and Google enforces a 100 refresh-token issuance cap per OAuth client. If you encounter repeated invalid_grant refresh failures, re-authenticate and revoke unused tokens in Google Cloud Console, or move the app to production.

gpd config - Configuration

gpd config init              # Initialize project configuration
gpd config doctor            # Diagnose configuration issues
gpd config path              # Show configuration file locations
gpd config get <key>         # Get a configuration value
gpd config set <key> <value> # Set a configuration value
gpd config completion bash   # Generate shell completions

gpd apps - App Discovery

# List apps in the developer account
gpd apps list

# Get app details by package
gpd apps get com.example.app

gpd publish - App Publishing

# Upload artifacts
gpd publish upload app.aab --package com.example.app

# List and inspect builds
gpd publish builds list --package ...
gpd publish builds get 123 --package ...
gpd publish builds expire 123 --package ... --confirm
gpd publish builds expire-all --package ... --confirm

# ASC beta-group compatibility workflow
gpd publish beta-groups list --package ...
gpd publish beta-groups get internal --package ...
gpd publish beta-groups add-testers internal --group qa@example.com --package ...

# Create/update releases
gpd publish release --package ... --track internal --status draft
gpd publish release --package ... --track production --status inProgress --version-code 123

# Release workflow mapping (ASC submit/versions parity)
gpd publish capabilities
docs/examples/release-workflow.md

# Manage rollouts
gpd publish rollout --package ... --track production --percentage 10
gpd publish promote --package ... --from-track beta --to-track production
gpd publish halt --package ... --track production --confirm
gpd publish rollback --package ... --track production --confirm

# View status
gpd publish status --package ... --track production
gpd publish tracks --package ...
gpd publish capabilities

# Store listing
gpd publish listing update --package ... --locale en-US --title "My App"
gpd publish listing get --package ...
gpd publish listing delete --package ... --locale en-US --confirm
gpd publish listing delete-all --package ... --confirm

# Assets
gpd publish assets upload ./assets --package ...
gpd publish assets spec

# Testers
gpd publish testers list --package ... --track internal
gpd publish testers add --package ... --track internal --group testers@example.com
gpd publish testers get --package ... --track internal

gpd reviews - Review Management

# List reviews with filtering
gpd reviews list --package ... --min-rating 1 --max-rating 3
gpd reviews list --package ... --include-review-text --scan-limit 200

# Reply to reviews
gpd reviews reply --package ... --review-id abc123 --text "Thank you!"
gpd reviews reply --package ... --review-id abc123 --template-file reply.txt

# Get a review
gpd reviews get --review-id abc123

# Get the developer response for a review
gpd reviews response get --review-id abc123
gpd reviews response for-review --review-id abc123

# View capabilities
gpd reviews capabilities

gpd purchases - Purchase Verification

# Verify a purchase token
gpd purchases verify --package ... --token <token> --product-id sku123

# View capabilities
gpd purchases capabilities

gpd analytics - App Analytics

# Query analytics data (vitals metrics)
gpd analytics query --package ... --metrics crashRate --start-date 2024-01-01 --end-date 2024-01-31

# View capabilities
gpd analytics capabilities

gpd vitals - Android Vitals

# Query crash data
gpd vitals crashes --package ... --start-date 2024-01-01 --end-date 2024-01-31

# Query ANR data
gpd vitals anrs --package ... --start-date 2024-01-01 --end-date 2024-01-31

# View capabilities
gpd vitals capabilities

gpd monetization - In-App Products

# List products
gpd monetization products list --package ...

# Get product details
gpd monetization products get sku123 --package ...

# Create/update products
gpd monetization products create --package ... --product-id sku123 --type managed

# List subscriptions (read-only)
gpd monetization subscriptions list --package ...

# Manage offers
gpd monetization offers list --package ... --subscription-id sub123
gpd monetization offers get sub123 offer123 --package ...

# Manage base plans
gpd monetization baseplans list --package ... --subscription-id sub123
gpd monetization baseplans activate sub123 base-plan-id --package ...
gpd monetization baseplans deactivate sub123 base-plan-id --package ...

gpd customapp - Custom App Publishing

# Create a custom app
gpd customapp create --name "My App" --title "My App Title" --category GAMES

gpd games - Play Games Services

```bash

Manage achievements

gpd games achievements list --package ... gpd games achievements get achievement-id --package ...

Extension points exported contracts — how you extend this code

PageResponse (Interface)
PageResponse is the interface that any paginated API response must implement. [17 implementers]
internal/cli/pagination.go
SecureStorage (Interface)
SecureStorage interface for platform-specific credential storage. [3 implementers]
internal/auth/auth.go
Logger (Interface)
(no doc) [3 implementers]
internal/workflow/runner.go
Option (FuncType)
Option configures the API client.
internal/api/client.go
ProgressCallback (FuncType)
(no doc)
internal/edits/manager.go
PageQuery (FuncType)
PageQuery is a function that fetches a single page given a page token. It returns the response which must implement Page
internal/cli/pagination.go
DeviceCodeOption (FuncType)
DeviceCodeOption is a function that configures the device code flow.
internal/auth/device_code.go
ProgressCallback (FuncType)
ProgressCallback is called during file uploads to report progress.
internal/cli/progress.go

Core symbols most depended-on inside this repo

NewAPIError
called by 653
internal/errors/codes.go
Error
called by 591
internal/workflow/runner.go
Run
called by 455
internal/cli/update.go
DoWithRetry
called by 328
internal/api/client.go
NewResult
called by 288
internal/output/result.go
WithHint
called by 267
internal/errors/codes.go
outputResult
called by 213
internal/cli/kong_helpers.go
WithServices
called by 202
internal/output/result.go

Shape

Function 1,560
Method 635
Struct 533
TypeAlias 12
FuncType 5
Interface 3

Languages

Go100%

Modules by API surface

internal/cli/kong_purchases_monetization.go128 symbols
internal/cli/kong_publish.go118 symbols
internal/cli/kong_vitals.go78 symbols
internal/cli/kong_purchases_monetization_test.go72 symbols
internal/output/result_test.go70 symbols
internal/cli/kong_reviews_test.go67 symbols
internal/cli/kong_monitor.go64 symbols
internal/cli/kong_analytics_apps_games_test.go64 symbols
internal/cli/kong_bulk_test.go59 symbols
internal/edits/manager_test.go54 symbols
internal/cli/kong_permissions_recovery_integrity.go51 symbols
internal/edits/manager.go49 symbols

For agents

$ claude mcp add Google-Play-Developer-CLI \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page