MCPcopy Index your code
hub / github.com/AndroidPoet/playconsole-cli

github.com/AndroidPoet/playconsole-cli @v0.5.15

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.5.15 ↗ · + Follow
347 symbols 1,703 edges 43 files 127 documented · 37%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Play Console CLI

Play Console CLI

Ship Android apps from your terminal

Latest Release Downloads CI Go License

No browser. No clicking. Just ship.

gpc bundles upload --file app.aab --track production

Install · Quick Start · Commands · CI/CD


✨ Why Developers Love GPC

😤 The Old Way 🚀 The GPC Way
Open browser, navigate menus, wait... gpc bundles upload --track internal
Copy-paste release notes manually gpc listings sync --dir ./metadata/
Check reviews one by one gpc reviews list --min-rating 1 \| jq
Complex CI/CD setup Single binary + env vars
"Is it uploaded yet?" Instant feedback

Inspired by App Store Connect CLI — the same philosophy, now for Android.


📦 Installation

# Homebrew (recommended)
brew tap AndroidPoet/tap && brew install playconsole-cli

# Install script (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash

# Build from source
git clone https://github.com/AndroidPoet/playconsole-cli.git
cd playconsole-cli && make build

After install, you can use either playconsole-cli or the shorter alias gpc.


⚡ Quick Start

One-command setup (recommended)

gpc setup --auto

That's it. This will: - Install gcloud if needed (via Homebrew on macOS, or curl on Linux) - Log you into Google Cloud - Create a service account and download credentials - Open Play Console for the one manual step (granting access) - Configure everything automatically

Manual setup

Prefer to do it yourself?

1. Create a service account (Google Cloud Console)

mkdir -p ~/.config/gpc
mv ~/Downloads/your-key.json ~/.config/gpc/service-account.json
chmod 600 ~/.config/gpc/service-account.json

2. Enable the APIEnable Google Play Android Developer API

3. Grant access in Play Console API Settings

4. Configure & verify

gpc auth login --credentials ~/.config/gpc/service-account.json
gpc apps list  # See your apps

Deploy! 🎉

gpc bundles upload --file app.aab --track internal
gpc tracks promote --from internal --to production --rollout 10

🎯 Commands

30 command groups, 80+ subcommands. Full reference →

📤 Release Management

gpc bundles upload --file app.aab --track internal    # Upload
gpc bundles find --version-code 42                     # Find by version code
gpc bundles wait --version-code 42                     # Wait for processing
gpc tracks list                                        # List tracks
gpc tracks promote --from internal --to beta           # Promote
gpc tracks update --track production --rollout 50     # Staged rollout
gpc tracks halt --track production                    # Emergency halt
gpc deobfuscation upload --version-code 42 --file mapping.txt  # Crash symbolication

🏪 Store Presence

gpc listings sync --dir ./metadata/                   # Sync all listings
gpc listings update --locale en-US --title "My App"   # Update listing
gpc images sync --dir ./screenshots/                  # Sync screenshots
gpc availability list --track production              # Country targeting

⭐ Reviews

gpc reviews list --min-rating 1 --max-rating 2        # Negative reviews
gpc reviews reply --review-id "gp:..." --text "Thanks!"
gpc reviews list | jq '[.[] | select(.rating == 5)]' # Filter with jq

💰 Monetization

gpc products list                                      # In-app products
gpc subscriptions list                                 # Subscriptions
gpc offers list --product-id sub_id --base-plan monthly # Subscription offers
gpc purchases verify --token "..." --product-id premium
gpc orders get --order-id GPA.1234                     # Order details
gpc orders refund --order-id GPA.1234 --confirm        # Issue refund
gpc external-transactions create --file tx.json        # Alternative billing

📊 Analytics & Vitals

gpc vitals overview                                    # Health summary
gpc vitals crashes --days 7                            # Crash rate
gpc vitals anr --days 28                               # ANR rate
gpc vitals slow-start --days 28                        # Slow startup rate
gpc vitals slow-rendering --days 28                    # Frame rendering
gpc vitals wakeups --days 28                           # Battery: wakeup alarms
gpc vitals wakelocks --days 28                         # Battery: stuck wakelocks
gpc vitals memory --days 28                            # Low memory killer rate
gpc vitals errors issues                               # Grouped error issues

📱 Devices

gpc devices list                                       # Supported devices
gpc devices stats                                      # Device distribution
gpc device-tiers list                                  # Device tier configs

📈 Reports

gpc reports list                                       # Available reports
gpc reports types                                      # Report type info

🧪 Testing

gpc testing internal-sharing upload --file app.aab   # Instant test link
gpc testing testers add --track beta --email "dev@company.com"

👥 Team

gpc users list
gpc users grant --email "dev@company.com" --role releaseManager

🛠️ Utilities

gpc doctor                                             # Validate setup
gpc init --package com.example.app                     # Create project config
gpc diff                                               # Compare draft vs live
gpc recovery list                                      # App recovery actions
gpc completion zsh > "${fpath[1]}/_gpc"                # Shell completions

🔄 CI/CD Integration

GitHub Actions

name: Deploy to Play Store

on:
  push:
    tags: ['v*']

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build
        run: ./gradlew bundleRelease

      - name: Install GPC
        run: |
          curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash
          echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Deploy
        env:
          GPC_CREDENTIALS_B64: ${{ secrets.PLAY_CREDENTIALS }}
          GPC_PACKAGE: com.yourcompany.app
        run: |
          gpc bundles upload --file app/build/outputs/bundle/release/app-release.aab --track internal
          gpc tracks promote --from internal --to production --rollout 10

Encode Credentials for CI

base64 < service-account.json | pbcopy  # macOS
base64 < service-account.json | xclip   # Linux
# Add as GPC_CREDENTIALS_B64 secret

🤖 Agent Skills

Use gpc with AI coding agents. Install the skill pack and your agent learns every command — releases, metadata, monetization, vitals, and more.

npx skills add AndroidPoet/playconsole-cli-skills

Then just ask:

Upload my AAB to the internal track and wait for processing
Show me the crash rate for the last 7 days
Set up a staged rollout to production starting at 5%

Browse all 12 skills →


⚙️ Environment Variables

Variable Description
GPC_CREDENTIALS_PATH Path to service account JSON
GPC_CREDENTIALS_B64 Base64-encoded credentials (CI)
GPC_PACKAGE Default package name
GPC_PROFILE Auth profile to use
GPC_OUTPUT Format: json | table | tsv | csv | yaml | markdown

🎨 Output Formats

gpc tracks list                    # JSON (default, for scripting)
gpc tracks list --pretty           # Pretty JSON
gpc tracks list -o table           # ASCII table
gpc tracks list -o tsv             # Tab-separated values
gpc tracks list -o csv             # Comma-separated values
gpc tracks list -o yaml            # YAML
gpc tracks list -o markdown        # GitHub-flavored Markdown table
gpc tracks list -o minimal         # First field only (piping)

🔒 Security

  • Credentials stored with 0600 permissions
  • Service account keys never logged
  • Base64 encoding for CI/CD secrets
  • No credentials in command history

🏆 Wall of Apps

Apps shipped using Play Console CLI:

App Creator
Wally @AndroidPoet

🚀 Add your app to the Wall!

Using GPC to ship your app? Get featured here!

  1. Fork this repo
  2. Edit docs/wall-of-apps.json
  3. Add your app:
{
  "app": "Your App Name",
  "link": "https://play.google.com/store/apps/details?id=your.package",
  "creator": "YourGitHubUsername"
}
  1. Submit a PR!

🤝 Contributing

PRs welcome! Please open an issue first to discuss major changes.

make build    # Build
make test     # Test
make lint     # Lint

📄 License

MIT


⬆ Back to top

Not affiliated with Google. Google Play is a trademark of Google LLC.

If GPC saved you time, give it a ⭐

Contributing

Contributions are welcome! If you've found a bug, have an idea for an improvement, or want to contribute new features, please open an issue or submit a pull request.

Find this repository useful? :heart:

Support it by joining stargazers for this repository. :star:

Also, follow me on GitHub for my next creations! 🤩

License

MIT © 2026 Ranbir Singh

Core symbols most depended-on inside this repo

Context
called by 138
internal/api/client.go
Print
called by 107
internal/output/output.go
GetPackageName
called by 96
internal/cli/shared.go
MustMarkFlagRequired
called by 93
internal/cli/shared.go
GetPackageName
called by 84
internal/api/client.go
RequirePackage
called by 81
internal/cli/shared.go
NewClient
called by 79
internal/api/client.go
PrintInfo
called by 75
internal/output/output.go

Shape

Function 248
Struct 54
Method 44
TypeAlias 1

Languages

Go100%

Modules by API surface

internal/api/client.go38 symbols
cmd/playconsole-cli/commands/vitals/vitals.go34 symbols
internal/output/output.go25 symbols
cmd/playconsole-cli/commands/setup/setup.go18 symbols
internal/config/config.go14 symbols
internal/cli/shared.go13 symbols
internal/api/github.go11 symbols
internal/api/enablement.go9 symbols
cmd/playconsole-cli/commands/users/users.go9 symbols
cmd/playconsole-cli/commands/subscriptions/subscriptions.go9 symbols
cmd/playconsole-cli/commands/offers/offers.go9 symbols
cmd/playconsole-cli/commands/doctor/doctor.go9 symbols

For agents

$ claude mcp add playconsole-cli \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact