Security notes
How packages are protected, and the limits of that protection.
Draft — not legal advice
Package handling
Uploaded packages are stored privately, hashed and signed. Published packages are encrypted at rest. A package is released only against a short-lived signed URL that the Hub requests after a licence check, and the Hub verifies the signature and hash before loading anything.
Protection by runtime
C# / .NET — assemblies are obfuscated and signed, then loaded into an isolated load context inside the host process.
Python — shipped as bytecode inside an encrypted package and loaded from memory into a Hub-managed environment.
Dynamo — the graph is never written to disk in clear text; it is opened from a decrypted stream and executed headlessly.
Grasshopper — the definition is decrypted in memory and solved in a Hub-controlled document with the canvas hidden and the document locked.
The honest limit
None of this is absolute. Any code that executes on a machine someone controls can, with enough effort, be inspected. What this architecture does is raise the cost far above casual copying, make redistribution detectable, and give the developer a contract, an audit trail and the ability to revoke a licence or a device.
Anyone who tells you client-side protection is unbreakable is selling something.
Reporting a vulnerability
Email security@routines.io. We will acknowledge within two business days. Please do not test against other users' accounts or data.