| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
No browser. No clicking. Just ship.
gpc bundles upload --file app.aab --track productionInstall · Quick Start · Commands · CI/CD
| 😤 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.
# 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 buildAfter install, you can use either playconsole-cli or the shorter alias gpc.
gpc setup --autoThat's it. This will:
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.json2. Enable the API → Enable 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 appsgpc bundles upload --file app.aab --track internal
gpc bundles upload --file app.aab --track production --edit-mode=stage
gpc bundles upload --file app.aab --track production --edit-mode=open
gpc edits commit --edit-id EDIT_ID --edit-mode=stage
gpc tracks promote --from internal --to production --rollout-percentage 1030 command groups, 80+ subcommands. Full reference →
gpc bundles upload --file app.aab --track internal # Upload
gpc bundles upload --file app.aab --track production --edit-mode=stage # Commit and save as not yet sent for review
gpc bundles upload --file app.aab --track production --edit-mode=open # Leave edit open
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-percentage 50 # Staged rollout
gpc tracks halt --track production # Emergency halt
gpc deobfuscation upload --version-code 42 --file mapping.txt # Crash symbolicationgpc 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 (append)
gpc images sync --dir ./screenshots/ --progress # Show per-file upload progress
gpc images sync --dir ./screenshots/ --replace # Replace screenshots per locale/type
gpc availability list --track production # Country targetingAdd --progress to gpc images upload or gpc images sync when you want coarse upload progress reporting for image files.
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 jqgpc 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 billinggpc 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 issuesgpc devices list # Supported devices
gpc devices stats # Device distribution
gpc device-tiers list # Device tier configsgpc reports list # Available reports
gpc reports types # Report type infogpc testing internal-sharing upload --file app.aab # Instant test link
gpc testing testers add --track beta --emails "dev@company.com"Use --edit-mode on edit-backed mutating commands to control how the edit is finalized:
gpc bundles upload --file app.aab --track production # live (default)
gpc bundles upload --file app.aab --track production --edit-mode=stage # commit and keep changes not yet sent for review
gpc bundles upload --file app.aab --track production --edit-mode=open # leave the edit open
gpc edits commit --edit-id EDIT_ID --edit-mode=stage # finalize an existing edit without sending it for reviewDuring rollout, existing --stage and --commit=false flags still work as compatibility aliases, but prefer --edit-mode=stage and --edit-mode=open.
gpc users list
gpc users grant --email "dev@company.com" --role releaseManagergpc doctor # Validate setup
gpc init --package com.example.app # Create project config
gpc diff # Compare draft vs live
gpc edits commit --edit-id EDIT_ID --edit-mode=stage # Commit an existing edit and keep it not yet sent for review
gpc recovery list # App recovery actions
gpc completion zsh > "${fpath[1]}/_gpc" # Shell completionsname: 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-percentage 10base64 < service-account.json | pbcopy # macOS
base64 < service-account.json | xclip # Linux
# Add as GPC_CREDENTIALS_B64 secretUse 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-skillsThen 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%
| 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 |
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)Apps shipped using Play Console CLI:
| App | Creator |
|---|---|
| Wally | @AndroidPoet |
Using GPC to ship your app? Get featured here!
{
"app": "Your App Name",
"link": "https://play.google.com/store/apps/details?id=your.package",
"creator": "YourGitHubUsername"
}PRs welcome! Please open an issue first to discuss major changes.
make build # Build
make test # Test
make lint # LintMIT
Not affiliated with Google. Google Play is a trademark of Google LLC.
| Back | FazBrowse Home | New Git URL |