CLI Commands

Upload large game builds via command line

Quick Start

circle-check

Upload larger builds directly to Cloudflare R2. Fast, secure, and perfect for CI/CD.

1. Login

Authenticate and save credentials locally.

2. List Apps

See all apps you can upload to (owned + team apps).

3. Upload Build

Upload your game build (automatic multipart).

4. Check Status

Monitor build processing in real-time.

5. Retry Failed Build (if needed)

Retry a failed or cancelled build without re-uploading.


Commands

login

Authenticate with browser, api key, or email/password. Saves JWT token locally for future commands.

list-apps

List all apps you have access to (yours + team apps).

can-upload

Check if you can upload a file (permissions + quota).

upload

Upload a build file. Calculates MD5 hash, uploads directly to R2, then notifies backend.

Options:

  • -a, --app-id - Application ID (get from list-apps)

  • -f, --file - ZIP file path

  • -n, --notes - Build notes/changelog

  • --no-status - Skip status display after upload

How it works:

  1. Requests presigned URL from backend

  2. Uploads directly to Cloudflare R2 (multipart if > 100 MB)

  3. Notifies backend to start processing

status

Check build processing status. Use --watch to poll until complete.

Build Statuses:

  • Pending โ†’ Enqueued โ†’ DownloadingBuild โ†’ UnzippingBuild โ†’ CreatingPatch โ†’ Completed

  • Failed - Check errorMessage for details

Duration Fields:

  • Upload Duration - Time to upload file to R2 (shown immediately)

  • Total Duration - Complete processing time (only shown when Completed)

retry

Retry a failed or cancelled build using the already uploaded file. This saves time and bandwidth by reusing the original upload.

Options:

  • <build-id> - The build ID to retry (required)

  • --watch - Monitor the retried build continuously (optional, default: true)

Requirements:

  • Build must have Failed or Cancelled status

  • Original uploaded file must still exist in storage

  • Build must be from your apps or team apps

Example:

When to use:

  • Build failed due to temporary server issues

  • Build was cancelled accidentally

  • Processing error occurred during patch creation


Ignore Paths

Exclude specific files and folders from patch generation. This feature helps reduce patch sizes and prevents temporary or user-specific files from being included in updates.

Configuration

Ignore paths are configured per application in the dashboard:

App Settings โ†’ Build & Patch โ†’ Ignored Paths

Each app can have its own set of ignored paths that apply to all future builds.

Default Ignored Paths

The system automatically adds:

  • *output_log.txt - Launcher log files

  • SelfUpdater\ - Auto-updater files (for Apps, not Launchers)

Custom Ignored Paths

Add paths in the dashboard (one per line):

Path Syntax

  • Directories: End with \ (Windows) or / (Linux/Mac)

  • Wildcards: Use * to match multiple files (e.g., *.log)

  • Relative paths: All paths are relative to build root

  • Case-sensitive: Paths are case-sensitive on Linux/Mac

Examples:

Path
Description

logs\

Ignore entire logs folder

*.tmp

Ignore all .tmp files

cache\*.dat

Ignore .dat files in cache folder

debug_output.txt

Ignore specific file

Temp\

Ignore Temp folder

*_backup.json

Ignore all backup JSON files

How It Works

  1. Upload: You upload a build ZIP containing all files

  2. Extract: Backend extracts the build to temporary storage

  3. Patch Creation: PatchManager compares with previous build and creates patches

    • Files matching ignored paths are excluded from patches

    • Ignored files are not tracked for updates

  4. Distribution: Clients only download changed files (excluding ignored paths)

Benefits

  • Smaller patches: Exclude logs, cache, and temporary files

  • Faster downloads: Less data to transfer to end-users

  • Cleaner updates: Avoid overwriting user-specific files

  • Flexibility: Configure once, applies to all future builds

Limits

  • Maximum 100 paths per application

  • Maximum 500 characters per path

  • No duplicate paths allowed

  • Validation occurs when saving in dashboard

Best Practices

  • Ignore log files and crash dumps

  • Ignore user-generated content folders

  • Ignore platform-specific cache files

  • Test with a small build first to verify paths work correctly


Complete Example

Full workflow from login to upload completion.


CI/CD Examples

Automate build uploads on every release tag.

GitHub Actions

Triggers on version tags (e.g., v1.0.0).

Required Secrets: (Settings โ†’ Secrets)

  • GLC_API_URL: https://api.gamelauncher.cloud

  • GLC_EMAIL: Your email

  • GLC_PASSWORD: Your password

  • GLC_APP_ID: Application ID (from list-apps)

GitLab CI

Triggers on version tags.

Variables: (Settings โ†’ CI/CD โ†’ Variables)

  • GLC_API_URL, GLC_EMAIL, GLC_PASSWORD, GLC_APP_ID

Bash Script

Simple script for custom workflows.


Troubleshooting

Common issues and quick fixes.

Problem
Solution

"Not authenticated"

Token expired. Run login again

"App not found"

Wrong app ID. Check with list-apps

"Upload failed"

Network issue. Check connection and retry

Build stuck in "Processing"

Large builds take 5-10 min. Use status --watch

"Email not confirmed"

Verify email in dashboard first


Configuration

Credentials are stored locally (JWT token + email).

Config file location:

  • Windows: %APPDATA%\GameLauncherCloud\config.json

  • macOS: ~/Library/Application Support/GameLauncherCloud/config.json

  • Linux: ~/.config/gamelaunchercloud/config.json

To reset: Delete config file and run login again.


Next Steps

circle-check

Last updated

Was this helpful?