PyLocket
Protect, license, and sell your Python apps, without ever shipping your source or your keys.
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
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, branded download pages, free-trial links, one-click push updates to your users, and hosted checkout, all from the CLI. One tool 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:
- Issue, list, revoke, extend, and reset license keys (
pylocket licenses ...) - 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
# 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, then fetch the output |
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
- Docs: docs.pylocket.com
- Developer Portal: portal.pylocket.com
- Email: support@pylocket.com
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pylocket-1.1.18.tar.gz.
File metadata
- Download URL: pylocket-1.1.18.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c2690ff8e364840150051d32e5ecf6d938ae2d486e225750329c0d895635128
|
|
| MD5 |
3a6f8be6ad5e8e627262701c1c6458fa
|
|
| BLAKE2b-256 |
10360a2ed11bd8fa5e0dfcf386b22dfc96a50a6fe7109f0c5fb4a9efe6088f24
|
File details
Details for the file pylocket-1.1.18-py3-none-any.whl.
File metadata
- Download URL: pylocket-1.1.18-py3-none-any.whl
- Upload date:
- Size: 41.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8fae3f2065bb005b5ffc2138ce71b02341912b2c826423349feb8ab1441c4df
|
|
| MD5 |
8eb927da34ba0d513dc0b0513e601a3f
|
|
| BLAKE2b-256 |
f0886ea4959206db519eaf0d6c1a7b7b13e69249b374ab24bf46b54a031cdd06
|