Lmcq Runtime Workflow Encryption
Lmcq Runtime Workflow Encryption — machine-locking a workflow file, no cloud required
A ComfyUI workflow is a JSON file. Anyone who has it can open it, read every node, every setting, every clever trick you spent a weekend figuring out, and just... keep it. This node locks that file down: pick a workflow, set a password and (optionally) a list of authorized machines, and the output is a .lcwf file that only LmcqRuntimeWorkflowDecryption can open - and only on hardware you've named.
Runtime, not Auth - and that's the point. The pack ships two workflow-protection systems that look similar but aren't. The "Auth" family (LmcqAuthWorkflowEncryption) talks to LMCQ's own cloud service, which buys you real-time revocation and usage limits but means your buyer needs network access to LMCQ's servers to ever open the file. This "Runtime" node does none of that. Everything - the password check, the machine-code check - happens locally, offline, forever. No account, no server dependency, no risk that LMCQ shutting down a service someday bricks something you already sold. The tradeoff is the mirror image: once a file is out there, you can't revoke it or extend access remotely. You'd only reach for the Auth version if you're actively managing an ongoing sale relationship with many buyers; for a one-off "here's the encrypted pipeline, here's the password" handoff, this is the simpler, more durable choice.
The fields. workflow_file is a dropdown listing the workflow JSON files ComfyUI already knows about. key is the password - whoever decrypts needs it exact, no fuzzy matching. save_name (default encrypted_workflow) names the .lcwf output. machine_codes is a multiline field: leave it blank for password-only protection, or paste in one hardware ID per line to also restrict decryption to specific machines. Gather those ahead of time - have each authorized person run LmcqGetMachineCode on their own install and send you the string it outputs, then add every one of them before you encrypt. There's no server here to add a late arrival to; miss a machine and the fix is re-encrypting and redistributing from scratch. The node has no wired outputs at all - it's a terminal action that writes the file and stops.
Installing it. Through ComfyUI Manager (search "ComfyUI-LMCQ") or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/sebord/ComfyUI-LMCQ
Restart ComfyUI afterward. No models to download for this particular node - the workflow-protection system is pure Python.
Where this pack actually gets used. ComfyUI-LMCQ isn't a hobby project floating in isolation - it's the same encryption plumbing behind Chinese model marketplaces like LibLib and Shakker, where creators sell access to checkpoints and LoRAs without handing over a plain, copyable file. The workflow-encryption nodes are the same idea applied one layer up: gate the pipeline, not just the model. Worth knowing going in, since it means the security model here is built by a team whose business is exactly this, not a side feature bolted onto something else.
Worth knowing before you build a business on this. The pack's core protection logic ships as compiled, obfuscated code, deliberately - the README frames it as hardening against reverse-engineering. That's expected for a node whose whole job is protecting IP, but neither you nor a buyer can read what it's actually doing; you're trusting a small team's word, same as with any closed-source security tool. Separately: key is a plain, unmasked text field on the node itself. If you export or share the encryption workflow with the password still typed in, you've published your own key in plaintext - clear it before you save that graph anywhere public.
Troubleshooting. Before anything else, confirm the node loaded - this pack has a well-reported bug where a compiled runtime module the protection system depends on goes missing on some installs, throwing ModuleNotFoundError: No module named '...runtime.model_protection' (or the related api_model_protection) at ComfyUI startup. That failure sits in the pack's shared __init__.py, so it takes the entire pack down, not just this node. The README's January 2026 changelog has the fix: copy the Python-version-matching files into the runtime folder, delete the mismatched ones, restart. The other trap is specific to how machine locking works: if you're encrypting on a rented GPU box, a Docker container, or any environment that gets torn down and rebuilt between sessions, the machine code isn't stable - lock a file to a machine that no longer exists tomorrow and nobody, including you, can decrypt it again.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| workflow_file | COMBO | 1 options: | |
| key | STRING | — | |
| save_name | STRING | encrypted_workflow | — |
| machine_codes | STRING | — |
Outputs (0)
No outputs