Skip to main content

PyLocket CLI - Protect and distribute Python applications

Project description

PyLocket CLI v1.1.1

Protect and distribute Python applications from the command line.

Installation

pip install pylocket

Or download platform-specific binaries from your Developer Portal.

Supported Python Versions

  • Python 3.12
  • Python 3.13
  • Python 3.14

Quick Start

# Authenticate with your PyLocket account
pylocket login

# List your apps
pylocket apps list

# Protect a PyInstaller executable
pylocket protect --app <APP_ID> --artifact dist/myapp.exe

# Check build status
pylocket status --build <BUILD_ID>

# Download the protected artifact
pylocket fetch --build <BUILD_ID> --out ./protected/

Commands

Command Description
pylocket login Authenticate with your PyLocket account
pylocket apps list List all your applications
pylocket apps create Create a new application
pylocket protect Upload and protect an artifact
pylocket status Check build protection status
pylocket fetch Download a protected artifact

Protection Flow

The CLI uses a two-step upload architecture when protecting an artifact:

  1. Create BuildPOST /v1/apps/{app_id}/builds sends build metadata and receives a presigned S3 upload URL.
  2. Upload to S3 — The artifact bytes are PUT directly to the presigned S3 URL (bypasses the API server).
  3. Confirm BuildPOST /v1/apps/{app_id}/builds/{build_id}/confirm tells the backend the upload is complete and triggers the protection pipeline.
  4. Poll StatusGET /v1/apps/{app_id}/builds/{build_id} is polled until the build reaches ready or failed status. The response includes progress_percent and progress_message fields computed server-side.
  5. DownloadGET /v1/apps/{app_id}/builds/{build_id}/download returns a JSON body with a download_url pointing to S3. The CLI then fetches the protected artifact from that URL.

Key details:

  • Build routes are nested under apps: /v1/apps/{app_id}/builds/{build_id} (NOT /v1/builds/)
  • Login returns access_token (not token); app listings use a data key (not apps)
  • The S3 presigned URL upload is a raw PUT without the API authorization header

What's New in v1.1.1

  • Real-time progress bar — the protect command now displays a live progress bar with server-computed progress_percent and progress_message showing each pipeline stage (downloading, scanning, protecting, uploading)
  • Malware rejection handling — builds flagged by security scanning now display a clear "Build Rejected" message instead of a generic failure
  • API compatibility fixes — corrected response model alignment with backend (two-step upload flow, presigned S3 URLs, nested build routes)

Documentation

Full documentation: docs.pylocket.com

Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylocket-1.1.1.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylocket-1.1.1-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file pylocket-1.1.1.tar.gz.

File metadata

  • Download URL: pylocket-1.1.1.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.18

File hashes

Hashes for pylocket-1.1.1.tar.gz
Algorithm Hash digest
SHA256 922a9976d911c3571511534f4a27d27a997fc6dc1ca158d34821ecc7c5bdb7c3
MD5 33697be20a1b1ddf4249cc78f49389b4
BLAKE2b-256 753822f3fc9c4faf8a8225f026affbc0186e88e033831712092506f21c65b2b5

See more details on using hashes here.

File details

Details for the file pylocket-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: pylocket-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 30.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.18

File hashes

Hashes for pylocket-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 deee2ea59269cc29b45a5325a0e86261b9b428134a07ec3c590b15b0f8247ea4
MD5 adb769debddffa37ec8878a5eaa471a8
BLAKE2b-256 2210a2dcdd22aa9588f542125cf19f1c1b28d185efcbd9ee7a0dbfb99c5e27bd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page