Vue d'ensemble

Ce que MagicLock protège, les deux niveaux de protection, et les concepts qui reviennent partout ailleurs dans cette documentation.

MagicLock est un outil en ligne de commande et un SDK Python qui chiffre votre code source Python et vos modèles d'IA, les place derrière une licence signée, et vérifie cette licence entièrement hors ligne à chaque exécution de votre logiciel. Vous installez un paquet, vous lancez une commande, et vous livrez.

Le modèle mental

Tout dans MagicLock se résume à deux questions indépendantes : quoi protéger, et quelle force de protection est nécessaire.

Ce qui est protégéSortieForce
Niveau pratiqueSource Python (.py).pya — un conteneur chiffré et verrouillé que le système d'import sait chargerBonne — empêche la copie opportuniste ; le bytecode déchiffré existe en mémoire pendant l'exécution
Niveau compiléSource Python, compilée.so / .pyd natif, ou un répertoire d'application autonomeForte — aucun Python en clair n'est livré, et la barrière de licence est insérée automatiquement dans chaque module compilé, au lieu d'être concentrée en un seul endroit qu'un attaquant pourrait trouver et neutraliser
Protection des modèles/ressourcesModèles, poids, tout actif binaire.enc — une enveloppe chiffréeS'applique aux deux niveaux ; le contenu en clair n'existe jamais qu'en mémoire

Vous pouvez utiliser le niveau pratique pour mettre en place une protection en quelques minutes, puis passer plus tard au niveau compilé sans changer la façon dont votre code est écrit — la barrière du niveau compilé est insérée automatiquement, sans décorateur ni appel manuel à bootstrap() à ajouter.

Concepts fondamentaux

Quelques idées reviennent tout au long de cette documentation :

  • Licence — une autorisation signée délivrée à votre compte : quelles capacités vous pouvez utiliser, et jusqu'à quand. Délivrée et vérifiée sans que vous ayez jamais à manipuler un fichier de clé directement.
  • Liée à l'appareil (verrouillage machine) — par défaut, une licence — et tout ce qui est chiffré avec elle — est liée à la machine précise sur laquelle elle a été activée. Copiez le fichier chiffré sur une autre machine et il ne s'y déchiffrera pas.
  • Activation — l'étape unique qui provisionne une machine sous votre compte. Elle est intégrée à votre premier appel protect/build, si bien que vous la lancerez rarement à la main — voir Compte et activation.
  • Capacité — une permission nommée qu'une licence peut accorder (protection du code, chiffrement de modèles, etc.). La barrière d'exécution et open_model() vérifient chacune la capacité dont elles ont besoin.
  • En ligne pour empaqueter, hors ligne pour exécuter — le chiffrement contacte le serveur de licences à chaque fois, il a donc besoin d'une connexion. Le déchiffrement, lui, n'a jamais besoin du réseau, jamais.
  • Expiration — un contrôle optionnel et distinct porté par l'artefact chiffré lui-même — indépendant de votre licence — qui l'empêche de se déchiffrer après une date ou une durée.

Démarrage en 60 secondes

shell
pip install magiclock

# First run: signs you in (opens a browser) and activates this machine,
# then encrypts. Every encrypt after that is instant and non-interactive.
magiclock protect app.py            # -> app.pya

# Runs fully offline: no login, no network, ever.
magiclock run app.pya

Vous préférez confier le travail à un agent IA ?

Si vous travaillez dans un agent de programmation IA comme Claude Code, lancez magiclock skill une seule fois — la commande installe une compétence de projet (.claude/skills/magiclock-protect/SKILL.md) qui enseigne à l'agent tout le workflow ci-dessus, afin qu'il puisse choisir un niveau de protection et protéger votre code à votre place.

shell
magiclock skill

Pour aller plus loin