npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

airborne-devkit

v0.31.0

Published

Cli for Airborne

Readme

Airborne CLI for React Native

A command-line interface for managing Over-The-Air (OTA) updates in React Native applications using the Airborne platform. This tool streamlines the process of creating, configuring, and deploying OTA updates for both Android and iOS platforms.

🚀 Features

  • Configuration Management: Set up Airborne configurations for React Native projects
  • Platform Support: Full support for Android and iOS platforms
  • OTA Updates: Create and deploy Over-The-Air updates seamlessly
  • File Management: Upload files directly or use external URLs
  • Package Creation: Build deployable packages from local configurations
  • Authentication: Secure login with client credentials
  • Interactive CLI: User-friendly prompts and validations

🏁 Quick Start

1. Initialize Airborne Configuration

node airborne_cli/src/index.js create-local-airborne-config airborne-react-native/example

This creates an airborne-config.json file with your project settings.

2. Create Release Configuration

node airborne_cli/src/index.js create-local-release-config airborne-react-native/example

3. Authenticate with Airborne Server

node airborne_cli/src/index.js login --client_id YOUR_CLIENT_ID --client_secret YOUR_CLIENT_SECRET

4. Upload Files and Create Package

# Upload files to Airborne server
node airborne_cli/src/index.js create-remote-files -u airborne-react-native/example

# Create package
node airborne_cli/src/index.js create-remote-package airborne-react-native/example

🔐 Authentication

Before using remote operations, you need to authenticate with the Airborne server:

node airborne_cli/src/index.js login --client_id <your-client-id> --client_secret <your-client-secret>

Security Note: Store your credentials securely and avoid committing them to version control. Consider using environment variables:

node airborne_cli/src/index.jslogin --client_id "$AIRBORNE_CLIENT_ID" --client_secret "$AIRBORNE_CLIENT_SECRET"

⚙️ Configuration

Airborne Configuration (airborne-config.json)

Created by create-local-airborne-config command:

{
  "organisation": "your-org-name",
  "namespace": "your-app-namespace",
  "js_entry_file": "index.js",
  "android": {
    "index_file_path": "android/app/build/generated/assets/react/release/index.android.bundle"
  },
  "ios": {
    "index_file_path": "ios/main.jsbundle"
  }
}

Release Configuration

Platform-specific release configurations are created automatically with appropriate timeouts and file paths.

📚 Commands Reference

Configuration Commands

create-local-airborne-config [directoryPath]

Initialize Airborne configuration for React Native projects.

Options:

  • -o, --organisation <org> - Organisation name
  • -n, --namespace <namespace> - Application namespace
  • -j, --js-entry-file <path> - JavaScript entry file path
  • -a, --android-index-file <path> - Android bundle output file
  • -i, --ios-index-file <path> - iOS bundle output file

Examples:

# Interactive mode
node  airborne_cli/src/index.js

# With options
node  airborne_cli/src/index.js  -o "MyCompany" -n "MyApp"

create-local-release-config [directoryPath]

Create platform-specific release configuration files.

Options:

  • -p, --platform <platform> - Target platform (android | ios)
  • -b, --boot-timeout <timeout> - Boot timeout in milliseconds
  • -r, --release-timeout <timeout> - Release timeout in milliseconds

Examples:

# Interactive mode
node airborne_cli/src/index.js create-local-release-config

# Specific platform
node airborne_cli/src/index.js create-local-release-config -p android

# With timeouts
node airborne_cli/src/index.js create-local-release-config -p ios -b 30000 -r 60000

update-local-release-config [directoryPath]

Update existing release configuration files.

Options:

  • -p, --platform <platform> - Target platform (android | ios)
  • -b, --boot-timeout <timeout> - New boot timeout in milliseconds
  • -r, --release-timeout <timeout> - New release timeout in milliseconds

Remote Operations

login [directoryPath]

Authenticate with the Airborne server.

Options:

  • --client_id <clientId> - Client ID (required)
  • --client_secret <clientSecret> - Client Secret (required)

create-remote-files [directoryPath]

Process local files and create remote file records.

Options:

  • -p, --platform <platform> - Target platform (android | ios) (required)
  • -t, --tag <tag> - Tag for file identification
  • -u, --upload - Upload files directly to Airborne server

Examples:

# Create file records with external URLs
node airborne_cli/src/index.js create-remote-files -p android

# Upload files to Airborne server
node airborne_cli/src/index.js create-remote-files -p ios --upload

# With custom tag
node airborne_cli/src/index.js create-remote-files -p android -t "v1.2.0" --upload

create-remote-package [directoryPath]

Create a deployable package from local release configuration.

Options:

  • -p, --platform <platform> - Target platform (android | ios) (required)
  • -t, --tag <tag> - Package tag for identification

Examples:

# Create package
node airborne_cli/src/index.js create-remote-package -p android

# With version tag
node airborne_cli/src/index.js create-remote-package -p ios -t "v2.1.0"

🔄 Complete Workflow Example

Here's a complete example of setting up OTA updates for a React Native project:

# 1. Navigate to your React Native project
cd my-react-native-app

# 2. Initialize Airborne configuration
node  airborne_cli/src/index.js  \
  -o "MyCompany" \
  -n "MyApp" \
  -j "index.js"

# 3. Create release configurations for both platforms
node airborne_cli/src/index.js create-local-release-config -p android -b 30000 -r 60000
node airborne_cli/src/index.js create-local-release-config -p ios -b 30000 -r 60000

# 4. Build your React Native bundles (standard RN commands)
npx react-native bundle --platform android --dev false --entry-file index.js \
  --bundle-output android/app/build/generated/assets/react/release/index.android.bundle \
  --assets-dest android/app/build/generated/res/react/release

npx react-native bundle --platform ios --dev false --entry-file index.js \
  --bundle-output ios/main.jsbundle \
  --assets-dest ios

# 5. Authenticate with Airborne
node airborne_cli/src/index.js login --client_id "$AIRBORNE_CLIENT_ID" --client_secret "$AIRBORNE_CLIENT_SECRET"

# 6. Upload files and create packages
node airborne_cli/src/index.js create-remote-files -p android --upload -t "v1.0.0"
node airborne_cli/src/index.js create-remote-package -p android -t "v1.0.0"

node airborne_cli/src/index.js create-remote-files -p ios --upload -t "v1.0.0"
node airborne_cli/src/index.js create-remote-package -p ios -t "v1.0.0"

📁 File Structure

After running the commands, your project will have:

your-project/
├── airborne-config.json                    # Main Airborne configuration
├── airborne-release-config-android.json    # Android release config
├── airborne-release-config-ios.json        # iOS release config
├── .airborne                               # Authentication token and other things (keep secure)
└── ... (your existing React Native files)

🔧 Troubleshooting

Common Issues

1. "Airborne config already exists" Error

  • The configuration file already exists in the directory
  • Use update-local-release-config to modify existing configurations

2. Authentication Errors

  • Verify your client credentials are correct and active
  • Check network connectivity to Airborne servers
  • Ensure you have write permissions in the target directory

3. Platform Validation Errors

  • Platform must be exactly "android" or "ios" (lowercase)
  • Use -p option to specify platform explicitly

4. File Upload Issues

  • Ensure all referenced files exist in the specified paths
  • Check file permissions and sizes
  • Verify your authentication token is valid

Getting Help

For additional help with any command, use the --help flag:

node airborne_cli/src/index.js --help
node  airborne_cli/src/index.js  --help

🛠️ Development

Requirements

  • Node.js 18+
  • React Native CLI
  • Valid Airborne server credentials