Lmcq Auth Model Encryption
Lmcq Auth Model Encryption — locking a checkpoint to a password and machine
If you've fine-tuned a checkpoint and want to sell access to it without handing over a raw, freely-copyable safetensors file, this is the node that does the locking. It's part of ComfyUI-LMCQ's "Auth" protection system - the pack's answer to "how do creators distribute a paid model without it immediately ending up on a torrent."
What it's for, and who it's for. This isn't a node the average hobbyist needs. It exists for people running the other side of a Patreon-style or Discord-shop model-selling setup - you encrypt your checkpoint, distribute the encrypted file plus a password, and only someone with LmcqAuthModelDecryption and the correct password (and, per the README's authentication server design, live validation against LMCQ's own auth platform) can actually load it. It's infrastructure for creators, not a step in a normal generation workflow.
How it fits into the broader Auth system. The README documents this as tied to an "Authentication Server Encryption System" - a cloud service at LMCQ's own platform where you register as a creator with an auth_key/auth_secret pair (configured in a local auth_key.json), and encrypted content checks in with that server at decrypt time for real-time authorization, usage limits, and revocation. That's a meaningfully bigger commitment than a locally-generated password: it means the people you distribute to need network access to LMCQ's servers to ever open the file, and you need an account there to issue it. If you just want local password protection with no third-party dependency, the pack's "Runtime" family (LmcqRuntimeModelEncryption) does that without the cloud requirement - worth knowing before you pick one over the other.
The fields. model_name is a dropdown of checkpoints in your local models/checkpoints folder - pick the one you're protecting. model_password is the encryption key; whoever decrypts needs the exact same string. save_name (default encrypted_model) names the output file. machine_code is a multiline field for hardware IDs - leave it blank to skip machine-locking entirely (password alone gates access), or paste in codes gathered via LmcqGetMachineCode from each buyer's machine to also restrict which physical hardware can decrypt it, one code per line for multiple authorized machines. There's no output - this is a terminal, is_output_node node; it writes the encrypted file to disk and that's the whole job.
Installing it. Through ComfyUI Manager (search "ComfyUI-LMCQ") or:
cd ComfyUI/custom_nodes
git clone https://github.com/sebord/ComfyUI-LMCQ
Restart ComfyUI afterward.
Worth saying plainly. ComfyUI has no sandbox for custom nodes - every node you install runs with full access to your machine, and this pack's own README describes its core protection logic as deliberately compiled into an obfuscated binary format specifically so it can't be inspected or reverse-engineered. That's the point of the feature (protecting IP means the protection code itself has to resist tampering), but it's a materially bigger trust ask than a typical readable custom node - the ecosystem has a documented history of malicious nodes doing real damage (a 2024 node called ComfyUI_LLMVISION harvested credentials and led to a federal conviction), and code you deliberately can't audit is worth being deliberate about installing, especially on a machine with anything else sensitive on it.
Troubleshooting. The most-reported issue with this pack isn't specific to encryption at all: a compiled runtime module the Auth nodes depend on has gone missing on some installs, throwing ModuleNotFoundError: No module named '...runtime.model_protection' (or api_model_protection) at startup and taking the entire pack down with it - every Lmcq node vanishes, not just this one. It's a live, reported issue on r/comfyui as of mid-2025, still unresolved for some users as of the pack's own January 2026 changelog entry, which documents the fix: copy the runtime files matching your Python version into the pack's runtime folder, delete the mismatched ones, restart.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| model_password | STRING | — | |
| save_name | STRING | encrypted_model | — |
| machine_code | STRING | — |
Outputs (0)
No outputs