CLI 參考
magiclock 的每一個子指令與旗標,都彙整在這一頁。
所有功能都是同一個指令:magiclock <子指令> [選項]。magiclock --version 會印出已安裝的版本;單獨執行 magiclock 則會印出說明。
activate
驗證身分並將這台機器納入帳號——具冪等性,可以放心重複執行。
| 旗標 | 意義 |
|---|---|
--server URL | 授權伺服器網址(依序回退至已儲存的工作階段、$MAGICLOCK_SERVER)。 |
--token TOKEN | Bearer 權杖(依序回退至已儲存的工作階段、$MAGICLOCK_TOKEN)。 |
--with-token | 無人值守模式:從 $MAGICLOCK_TOKEN 或標準輸入讀取入口網站鑄造的權杖。 |
--no-browser | 若需要登入,改為印出連結+驗證碼,而不是開啟瀏覽器。 |
status
顯示這台機器的帳號與啟用狀態。
| 旗標 | 意義 |
|---|---|
--offline | 略過與伺服器的即時往返,只依據本地狀態回報。 |
protect
把一個 .py 檔案(或一整個目錄,遞迴處理)加密成帶閘門的 .pya。
shell
magiclock protect PATH [-o OUT] [--remove]
[--trial | --expires-in DURATION | --expires-at DATE]
[--lock-passphrase | --no-bind-machine [--passphrase | --emit-key]]| 旗標 | 意義 |
|---|---|
PATH | 要保護的 .py 檔案,或要遞迴保護的目錄(.venv、venv、__pycache__、.git、dist、build 會自動略過)。 |
-o, --out | 輸出路徑(目錄模式下為輸出根目錄)。 |
--remove | 加密後刪除明文 .py 檔案。 |
--trial | 固定 48 小時自毀——用於展示。 |
--expires-in DURATION | 經過一段時間後停止解密(例如 30d)。 |
--expires-at DATE | 到指定日期後停止解密(例如 2026-12-31)。 |
--lock-passphrase | 二因子鎖:這台機器加上一組密碼片語。 |
--no-bind-machine | 便攜產物——不綁定機器。 |
--passphrase | 搭配 --no-bind-machine:以密碼片語解鎖(讀取 $MAGICLOCK_PASSPHRASE,否則以提示輸入)。 |
--emit-key | 搭配 --no-bind-machine:印出一組產生好的金鑰以供帶外分發,而不是使用密碼片語。 |
--trial/--expires-in/--expires-at 彼此互斥;--lock-passphrase 與 --no-bind-machine 這組旗標互斥。
protect-model
把模型或任何其他資源加密成 .enc 信封。有效期、--lock-passphrase 與便攜相關旗標皆與 protect 相同,此外還有:
| 旗標 | 預設值 | 意義 |
|---|---|---|
PATH | — | 要加密的檔案。 |
-o, --out | <path>.enc | 輸出路徑。 |
--feature NAME | ai_model | 解鎖此產物所需的授權能力。 |
--remove | 關閉 | 加密後刪除明文檔案。 |
build
把應用程式編譯成原生二進位檔,授權閘門自動插入每一個模組。完整流程見編譯強檔。
| 旗標 | 預設值 | 意義 |
|---|---|---|
entry | — | 進入點 .py 檔案。 |
-o, --output-dir | dist | 建置輸出目錄。 |
--source-root | 進入點檔案所在位置 | 要掃描/轉換的專案根目錄。 |
--module | 開啟 | 編譯成單一檔案的原生擴充模組。 |
--standalone | — | 改為編譯成一個自含式的應用程式目錄,與 --module 互斥。 |
--no-compile | 關閉 | 只做掃描+注入+內嵌,跳過原生編譯。 |
--keep-tmp | 關閉 | 保留中介轉換目錄。 |
--model PATH | 無 | 加密並打包一個模型(可重複)。 |
--model-lock-passphrase | 關閉 | 為打包的模型加上二因子鎖(需要至少一個 --model)。 |
--model-trial / --model-expires-in / --model-expires-at | 無 | 打包模型的有效期——彼此互斥。 |
run
執行一個 .py 或 .pya,包含閘門檢查。
| 旗標 | 預設值 | 意義 |
|---|---|---|
entry | — | 要執行的檔案。 |
--app-version | 1.0.0 | 應用程式版本,會與你授權設定的 max_app_version 做比對。 |
--passphrase | 關閉 | 提示輸入解密密碼片語(或讀取 $MAGICLOCK_PASSPHRASE)——用於便攜或二因子產物。 |
--key KEY | — | 便攜產物的解密金鑰(base64),或讀取 $MAGICLOCK_DECRYPT_KEY。 |
deactivate
把這台機器從你的帳號中移除。
| 旗標 | 意義 |
|---|---|
--local-only | 只清除本地保管庫,不釋出席位、不通知伺服器撤銷。 |
--server URL | 用於釋出請求的伺服器網址。 |
--token TOKEN | 用於釋出請求的 Bearer 權杖。 |
completion
印出 shell 的 Tab 鍵自動完成指令碼。
shell
magiclock completion bash > /etc/bash_completion.d/magiclock
magiclock completion zsh > "${fpath[1]}/_magiclock"