The official CLI for TestApp.io app distribution

Upload your Android (APK) and iOS (IPA) apps directly from the command line.
Notify your team instantly. Get feedback faster.

🖥️
Try me 👇

Quick Install

curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash

Works on macOS (Intel & Apple Silicon) and Linux (x86_64, ARM). For Windows, see below.


What is ta-cli?

ta-cli lets you upload app builds to TestApp.io without leaving your terminal. Perfect for:

  • Local development - Quick uploads while coding
  • CI/CD pipelines - Automated releases on every build
  • Team collaboration - Notify testers instantly with each release

Features:

  • Upload Android APK and iOS IPA files
  • Automatic app info extraction (version, bundle ID, etc.)
  • Git integration for release notes
  • Team notifications
  • Chunked uploads with automatic retry
  • Cross-platform support

Installation

macOS & Linux

curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash

This installs to /usr/local/bin/ta-cli.

Windows

Download from Releases:

File Architecture
ta-cli-Windows-x86_64.exe 64-bit (recommended)
ta-cli-Windows-i686.exe 32-bit

Rename it ta-cli.exe and add it to your PATH, or run it directly.

Verify Installation

ta-cli version

Quick Start

1. Get your credentials

Credential Where to find it
API Token portal.testapp.io/profile/tokens
App ID Your app page → Integrations tab at portal.testapp.io/apps

2. Configure (interactive)

ta-cli config

Follow the prompts to enter your credentials.

3. Publish your app

ta-cli publish

That's it! Your app is uploaded, and your team is notified.


Commands

ta-cli publish

Upload your app to TestApp.io.

ta-cli publish [flags]
Flag Description Default
--api_token Your API token From config
--app_id Your App ID From config
--release android, ios, or both both
--apk Path to Android APK file From config
--ipa Path to iOS IPA file From config
--release_notes Custom release notes None
--git_release_notes Use latest git commit as notes false
--git_commit_id Include commit ID in notes false
--notify Notify team members false
--archive_latest_release Archive previous release false
--config Custom config file path ~/.ta-cli.json

ta-cli config

Interactive configuration wizard.

ta-cli config

ta-cli version

Display version information.

ta-cli version

ta-cli completion

Generate shell autocompletion scripts.

# Bash
ta-cli completion bash > /etc/bash_completion.d/ta-cli

# Zsh
ta-cli completion zsh > "${fpath[1]}/_ta-cli"

# Fish
ta-cli completion fish > ~/.config/fish/completions/ta-cli.fish

Configuration

Config File

Location: ~/.ta-cli.json

{
  "api_token": "your_api_token",
  "app_id": "your_app_id",
  "release": "both",
  "apk": "/path/to/app.apk",
  "ipa": "/path/to/app.ipa",
  "release_notes": "",
  "git_release_notes": true,
  "git_commit_id": false,
  "notify": true,
  "archive_latest_release": false
}

Custom Config Path

ta-cli publish --config=/path/to/custom-config.json

Config Priority

  1. Command-line flags (highest priority)
  2. Config file specified by --config
  3. .ta-cli.json in current directory
  4. ~/.ta-cli.json (default)

Environment Variables

Use environment variables instead of config files (ideal for CI/CD):

Variable Description
TESTAPPIO_API_TOKEN Your API token
TESTAPPIO_APP_ID Your App ID
TESTAPPIO_RELEASE Release type: android, ios, or both
TESTAPPIO_ANDROID_PATH Path to APK file
TESTAPPIO_IOS_PATH Path to IPA file
TESTAPPIO_NOTIFY Send notifications: true or false
TESTAPPIO_RELEASE_NOTES Custom release notes
TESTAPPIO_GIT_RELEASE_NOTES Use git commit as notes: true or false
TESTAPPIO_GIT_COMMIT_ID Include commit ID: true or false

Example:

export TESTAPPIO_API_TOKEN="your_token"
export TESTAPPIO_APP_ID="your_app_id"
ta-cli publish --apk=./app.apk --release=android

CI/CD Integrations

ta-cli works with any CI/CD platform that supports bash. Just install and run!

Quick Setup (Any CI/CD)

# 1. Install ta-cli
curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash

# 2. Upload your app
ta-cli publish \
  --api_token=$TESTAPPIO_API_TOKEN \
  --app_id=$TESTAPPIO_APP_ID \
  --apk=./app-release.apk \
  --release=android \
  --notify=true

For the best experience, use our dedicated integrations with built-in auto-updates:

Integration Description Link
GitHub Action Native GitHub Actions integration testappio/github-action
Fastlane Plugin Native Fastlane plugin testappio/fastlane-plugin-testappio

Platform-Specific Guides

We have detailed guides for each CI/CD platform:

Platform Documentation
GitHub Actions View Guide
Fastlane View Guide
GitLab CI/CD View Guide
Jenkins View Guide
Bitrise View Guide
CircleCI View Guide
Travis CI View Guide
Azure Pipelines View Guide
Codemagic View Guide
Xcode Cloud View Guide

View All Integrations →


Examples

Android Only

ta-cli publish \
  --release=android \
  --apk=./app-release.apk \
  --notify=true

iOS Only

ta-cli publish \
  --release=ios \
  --ipa=./App.ipa \
  --notify=true

Both Platforms

ta-cli publish \
  --release=both \
  --apk=./app-release.apk \
  --ipa=./App.ipa \
  --release_notes="Bug fixes and improvements" \
  --notify=true

With Git Integration

ta-cli publish \
  --git_release_notes=true \
  --git_commit_id=true \
  --notify=true

Archive Previous Release

ta-cli publish \
  --apk=./app-release.apk \
  --archive_latest_release=true \
  --notify=true

Supported Platforms

Operating Systems

OS Architectures Binary
macOS Intel (x86_64), Apple Silicon (arm64), Universal ta-cli-Darwin-*
Linux x86_64, ARM64 (aarch64), ARMv7, i686 ta-cli-Linux-*
Windows x86_64 (64-bit), i686 (32-bit) ta-cli-Windows-*.exe

Supported File Types

Platform File Type Notes
Android .apk Debug or release signed APK
iOS .ipa Requires valid provisioning profile

Updating

Re-run the install script to update to the latest version:

curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash

Check your current version:

ta-cli version

Uninstalling

sudo rm /usr/local/bin/ta-cli
rm ~/.ta-cli.json  # Optional: remove config

Troubleshooting

"command not found: ta-cli"

The binary isn't in your PATH:

# Option 1: Restart your terminal
# Option 2: Add to PATH manually
export PATH=$PATH:/usr/local/bin
# Option 3: Use full path
/usr/local/bin/ta-cli version

Upload Fails or Hangs

  1. Check internet connection
  2. Verify credentials - Ensure API token and App ID are correct
  3. Validate your file - Make sure the APK/IPA exists and isn't corrupted
  4. Retry - The CLI has automatic retry with exponential backoff

Invalid APK/IPA Error

  • APK: Ensure it's a valid Android package with AndroidManifest.xml
  • IPA: Ensure it contains Info.plist and a valid provisioning profile

Config Issues

Reset your configuration:

rm ~/.ta-cli.json
ta-cli config

Windows-Specific Issues

  • Run Command Prompt or PowerShell as Administrator if needed
  • Use forward slashes or escaped backslashes in paths: C:/path/to/app.apk

API Reference

For advanced integrations, see the TestApp.io API Documentation.


Support

Resource Link
Help Center help.testapp.io
CLI Documentation help.testapp.io/ta-cli
Email [email protected]
Issues GitHub Issues

Need help? Contact us — we're happy to assist!