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

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.20.tar.gz (38.0 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.20-py3-none-any.whl (44.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pylocket-1.1.20.tar.gz
Algorithm Hash digest
SHA256 618ec7470ebb77496681d1828e0fe5ef272ddede42f71c9af9e60afc9192b372
MD5 219358265c17c38610a2014c81498467
BLAKE2b-256 183331421fb17441d4eaac1717ca22e356c802820b188ed325fd4b15e1258a90

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pylocket-1.1.20-py3-none-any.whl
Algorithm Hash digest
SHA256 ccb33486de12015151b5dd30b59b1ac106c54fdcc1d3db6398c0e53748f17472
MD5 81d44ded59d9f0af97288386a2dc69f6
BLAKE2b-256 73590309f32faaf9ab39a18343eebc128c71af9ea4d8cdbb522e54b2d4a547f8

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.20 This release

2 files

1.1.19

2 files

1.1.18

2 files

1.1.17

2 files

1.1.16

2 files

1.1.15

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 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