Skip to main content

PyLocket

Protect, license, and sell your Python apps, without ever shipping your source or your keys.

PyPI version Python versions License: Proprietary Downloads

PyLocket is the developer platform for shipping commercial Python desktop apps. It wraps your build in strong anti-reverse-engineering protection, issues and enforces per-device license keys, and delivers signed, ready-to-run downloads to your customers. No source rewrites. No percentage fees.

Protect a build in three lines:

pip install pylocket
pylocket login --sso
pylocket protect --app <APP_ID> --artifact dist/myapp.exe --out ./protected/

Why PyLocket

Most "protection" tools encrypt your .py files and decrypt them back to your original source at import time. That means the key ships inside your app, and the original code is recoverable. Public one-click decryptors exist for that entire category.

PyLocket is built differently.

1. Unrecoverable by design

Your code is encrypted at the function level, and the keys are issued to each licensed device at activation. They are never embedded in your app. Decrypted code runs inside a hardened native runtime and is never written back to disk as source. There is no one-click PyLocket decryptor, and architecturally there cannot be one.

2. A platform, not a file utility

Protection is step one. PyLocket also gives you license keys with per-device activation limits and revocation, and branded one-time download links from the CLI, plus free-trial links, one-click push updates to your users, and hosted checkout in the Developer Portal. One platform replaces your obfuscator, your license server, and your storefront.

3. Trusted, not flagged

Every PyLocket developer is identity-verified, and every build is code-signed (Windows Authenticode, macOS notarization, Linux GPG) and malware-scanned. Anonymous encryptors are exactly what malware authors abuse, which is why antivirus engines flag them. PyLocket apps carry a real identity and a real signature, so your users see trusted, not quarantined.

PyLocket does not claim to be unbreakable. Nothing is. The goal is to make reverse-engineering economically impractical: months of expert effort, not an afternoon.


Licensing and distribution

pylocket is a full license and delivery client, not just an obfuscator:

  • List, revoke, and reset license keys (pylocket licenses ...)
  • Issue license keys (pylocket licenses create) — each license records the per-license fee on your next invoice, so the command confirms first; --yes skips the prompt in CI. Extending an expiry (pylocket licenses extend) requires an active Pro subscription
  • Bind each license to a device limit you control
  • Generate one-time, branded download links (pylocket distribute)
  • Replace a protected build with your own code-signed copy while preserving notarization (pylocket replace-signed)
  • Wire build events into your own systems with webhooks (pylocket webhook ...)

Quick start

# Authenticate via browser (recommended for 2FA and password-manager users)
pylocket login --sso

# Or authenticate with email and password
pylocket login

# List your apps
pylocket apps list

# Protect a build (PyInstaller, cx_Freeze, Briefcase, wheel, .app, and more)
pylocket protect --app <APP_ID> --artifact dist/myapp.exe --out ./protected/

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

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

Commands

Command What it does
pylocket login Authenticate (--sso for browser OAuth2, recommended for 2FA)
pylocket apps Manage applications (list, create, update, delete)
pylocket protect Upload and protect a build (add --out <DIR> to download the result)
pylocket status Show a build's protection status
pylocket fetch Download a completed protected artifact
pylocket replace-signed Swap in your own code-signed build (preserves notarization)
pylocket licenses Manage licenses (list, create, get, revoke, reset-devices, extend)
pylocket distribute Generate a one-time branded download link
pylocket webhook Configure build-event webhooks (set, remove, test, status)
pylocket auth Manage authentication and 2FA settings

Run pylocket <command> --help for full options.


Supported builds

Packaging: PyInstaller (onefile and onedir), cx_Freeze, BeeWare Briefcase, Python wheels (.whl), raw scripts, ZIP archives, and macOS .app bundles.

Platforms: Windows x64, Linux x64, Linux arm64, macOS Intel, macOS Apple Silicon.

Python: 3.12, 3.13, and 3.14. PyLocket targets modern Python; the hardened runtime requires a current CPython.


PyLocket vs source encryptors

Source encryptors (.pye) PyLocket
Decryption key ships with the app Yes No, issued per device at activation
Recovers to your original source Yes Never
Built-in licensing, device binding, revocation No Yes
Sell, deliver, and push updates No Yes
Identity-verified devs, code-signed builds No Yes
Pricing Per developer seat Flat, per account, no percentage fees

See the full comparison at pylocket.com.


Documentation and support

Metadata

Release files for pylocket 1.1.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylocket 1.1.20
File Size Uploaded
pylocket-1.1.20.tar.gz 38.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pylocket 1.1.20
File Interpreter ABI Platform
pylocket-1.1.20-py3-none-any.whl Python 3 none any Details

Total release size: 82.9 kB

Release files / pylocket-1.1.20.tar.gz

Download URL pylocket-1.1.20.tar.gz
Size 38.0 kB
Tags Source
SHA-256 checksum
How to use checksums
618ec7470ebb77496681d1828e0fe5ef272ddede42f71c9af9e60afc9192b372
BLAKE2b-256 checksum
How to use checksums
183331421fb17441d4eaac1717ca22e356c802820b188ed325fd4b15e1258a90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release files / pylocket-1.1.20-py3-none-any.whl

Download URL pylocket-1.1.20-py3-none-any.whl
Size 44.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ccb33486de12015151b5dd30b59b1ac106c54fdcc1d3db6398c0e53748f17472
BLAKE2b-256 checksum
How to use checksums
73590309f32faaf9ab39a18343eebc128c71af9ea4d8cdbb522e54b2d4a547f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release history Release notifications | RSS feed

This release

1.1.20 This release

2 release files

1.1.19

2 release files

1.1.18

2 release files

1.1.15

2 release files

1.1.14

2 release files

1.1.13

2 release files

1.1.12

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page