Security notes

How packages are protected, and the limits of that protection.

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.