BrightSDK

BrightSDK Downloader

High-performance CLI + FFI library for downloading BrightSDK archives. Written in Rust.

Lint Test E2E Release
Download View on GitHub

API Key

All commands require an SDK_API_KEY environment variable.

  1. Log in to the BrightSDK Control Panel → API keys
  2. Click + Add, choose an expiration, name the key, click Generate key
  3. Copy the key immediately — it is shown only once
  4. Set the environment variable:

macOS / Linux

export SDK_API_KEY=<your-api-key>

Windows (PowerShell)

$env:SDK_API_KEY = "<your-api-key>"

Windows (CMD)

set SDK_API_KEY=<your-api-key>

Full guide with screenshots →

Install

Download the CLI binary for your platform via terminal:

macOS ARM64 (Apple Silicon)

curl -fsSL -o bright-sdk-downloader \
  https://github.com/BrightSDK/bright-sdk-downloader-rs/releases/latest/download/bright-sdk-downloader-macos-arm64
chmod +x bright-sdk-downloader

macOS x64

curl -fsSL -o bright-sdk-downloader \
  https://github.com/BrightSDK/bright-sdk-downloader-rs/releases/latest/download/bright-sdk-downloader-macos-x64
chmod +x bright-sdk-downloader

Linux x64

curl -fsSL -o bright-sdk-downloader \
  https://github.com/BrightSDK/bright-sdk-downloader-rs/releases/latest/download/bright-sdk-downloader-linux-x64
chmod +x bright-sdk-downloader

Windows (PowerShell)

Invoke-WebRequest -Uri "https://github.com/BrightSDK/bright-sdk-downloader-rs/releases/latest/download/bright-sdk-downloader-win-x64.exe" `
  -OutFile "bright-sdk-downloader.exe"
1.5 MB
Rust CLI binary
1.7 MB
Shared library (.dll/.so/.dylib)
48 MB
Node.js version (replaced)
CLI usage demo

What it does

Single source of truth for downloading BrightSDK archives across all integration tools — CLI, Gradle plugin, Unity plugin.

🔍
Version resolution via BrightSDK API
⬇️
Archive download from CDN with redirect handling
📦
Extraction with Zip Slip protection
🔒
SHA-256 integrity verification
📊
Progress bar with step tracking
Zero runtime dependencies — fully statically linked

Ships as:

Platforms

PlatformCLI binaryShared library
Linux x64bright-sdk-downloader-linux-x64libbright_sdk_download.so
macOS x64bright-sdk-downloader-macos-x64libbright_sdk_download.dylib
macOS ARM64bright-sdk-downloader-macos-arm64libbright_sdk_download.dylib
Windows x64bright-sdk-downloader-win-x64.exebright_sdk_download.dll

All releases on GitHub →   ·   Build from source →

CLI Usage

macOS / Linux

export SDK_API_KEY=<your-api-key>

# Check CLI version
bright-sdk-downloader --version

# Resolve latest version + download URL
bright-sdk-downloader resolve -p android --pretty

# Download and extract SDK archive
bright-sdk-downloader fetch -p tizen -o ./libs

# List all available platforms
bright-sdk-downloader platforms --pretty

Windows (PowerShell)

$env:SDK_API_KEY = "<your-api-key>"

.\bright-sdk-downloader.exe --version
.\bright-sdk-downloader.exe resolve -p android --pretty
.\bright-sdk-downloader.exe fetch -p tizen -o ./libs
.\bright-sdk-downloader.exe platforms --pretty

Commands

CommandDescriptionOutput
resolveResolve version + download URL{platform, version, url}
fetchDownload and extract archive{platform, version, url, output}
platformsList available platform keys[{key, last_version}]

Shared Library (FFI)

The library exposes a C ABI for use from any language:

// Returns JSON string (caller must free with sdk_free_string), or NULL on error
char* sdk_resolve(const char* platform, const char* version);
char* sdk_fetch(const char* platform, const char* version, const char* output_dir);
char* sdk_list_platforms(void);

// Error handling
char* sdk_last_error(void);

// Memory management
void sdk_free_string(char* ptr);

C# / Unity

[DllImport("bright_sdk_download", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr sdk_fetch(string platform, string version, string outputDir);

[DllImport("bright_sdk_download", CallingConvention = CallingConvention.Cdecl)]
static extern void sdk_free_string(IntPtr ptr);

Java (JNA)

public interface BrightSdkDownload extends Library {
    BrightSdkDownload INSTANCE = Native.load("bright_sdk_download", BrightSdkDownload.class);
    String sdk_resolve(String platform, String version);
    String sdk_fetch(String platform, String version, String outputDir);
    void sdk_free_string(Pointer ptr);
}

Building from source

# Prerequisites: Rust toolchain (https://rustup.rs)
cargo build --release

# Run tests
cargo test

# Build for all platforms (requires Docker for cross-compilation)
./build-all.sh