Every "protect your code" product has to answer one question honestly: what about root? This part is cryptship's answer.
The image on disk is ciphertext. But once your app runs, its plaintext is in the container's memory, and root on the host can read that memory. No user-space trick changes that. Only two things truly do:
Everything else in cryptship raises the cost. We would rather say that plainly than sell you a lock that is not there.
cryptship pack --transform-cmd "<your toolchain>" …
The transform runs over a copy of your app before it is encrypted. A memory dump then recovers compiled artifacts instead of readable source, which matters a lot when the attacker has AI tools that are good at reconstructing source. The repo includes a Python-bytecode recipe (scripts/compile-python.sh); swapping in Nuitka for native code is a one-line change. scripts/demo-compiled.sh shows the difference.
tmpfs`` deploy/.
That stops an attacker who is inside the container or not root. It does not stop root on the host.
The writes .cryptship-manifest.json and exposes CRYPTSHIP_LICENSE_ID and CRYPTSHIP_CUSTOMER to your app. If an instance leaks, it traces back to its licensee. That is a deterrent, not a lock: a determined attacker can strip it.
docker save and tar. online provider, revocation is real and immediate.
If you work on confidential computing and want to help, we would love to hear from you.