CLI 레퍼런스
모든 magiclock 하위 명령과 플래그를 한곳에 모았습니다.
모든 것은 하나의 명령입니다: magiclock <subcommand> [options]. magiclock --version은 설치된 버전을 출력하고, 인자 없이 magiclock만 실행하면 도움말을 출력합니다.
activate
이 머신을 인증하고 프로비저닝합니다. 멱등적(idempotent)이므로 다시 실행해도 안전합니다.
| 플래그 | 의미 |
|---|---|
--server URL | 라이선스 서버 URL(저장된 세션, 그다음 $MAGICLOCK_SERVER 순으로 대체됩니다). |
--token TOKEN | Bearer 토큰(저장된 세션, 그다음 $MAGICLOCK_TOKEN 순으로 대체됩니다). |
--with-token | 헤드리스 모드: $MAGICLOCK_TOKEN 또는 표준 입력에서 포털이 발급한 토큰을 읽습니다. |
--no-browser | 로그인이 필요할 경우, 브라우저를 여는 대신 링크와 코드를 출력합니다. |
status
이 머신의 계정 및 활성화 상태를 표시합니다.
| 플래그 | 의미 |
|---|---|
--offline | 서버와의 실시간 왕복을 건너뛰고, 로컬 상태만으로 보고합니다. |
protect
.py 파일(또는 디렉터리를 재귀적으로)을 게이트가 걸린 .pya로 암호화합니다.
magiclock protect PATH [-o OUT] [--remove]
[--trial | --expires-in DURATION | --expires-at DATE]
[--bind-machine [--passphrase] | --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). |
| (바인딩 플래그 없음) | 기본값: 키 없는 포터블 — magiclock이 설치된 어떤 머신에서든 복호화됩니다. 잠금도, 비밀 값도 없습니다. |
--bind-machine | 머신 잠금 산출물: 활성화된 이 머신에서만 복호화됩니다. --passphrase를 더하면 2단계 잠금(머신 그리고 패스프레이즈)이 됩니다. |
--passphrase | 패스프레이즈로 잠금 해제($MAGICLOCK_PASSPHRASE 또는 프롬프트) — 단독으로는 포터블, --bind-machine과 함께면 두 번째 인증 요소입니다. |
--emit-key | 생성된 키로 잠금 해제하는 포터블 산출물 — 키는 대역 외 배포용으로 출력됩니다. |
--trial/--expires-in/--expires-at는 서로 배타적입니다. --passphrase와 --emit-key는 서로 배타적이며, --emit-key는 --bind-machine과 함께 쓸 수 없습니다.
protect-model
모델이나 그 외 리소스를 .enc 봉투로 암호화합니다. protect와 동일한 유효 기간 및 바인딩 플래그(기본은 키 없는 포터블, --passphrase/--emit-key, --bind-machine [+ --passphrase])를 사용하며, 추가로 다음이 있습니다.
| 플래그 | 기본값 | 의미 |
|---|---|---|
PATH | — | 암호화할 파일. |
-o, --out | <path>.enc | 출력 경로. |
--feature NAME | ai_model | 이 산출물을 잠금 해제하는 데 필요한 라이선스 역량. |
--remove | off | 암호화 후 평문 파일을 삭제합니다. |
build
앱을 네이티브 바이너리로 컴파일하면서 라이선스 게이트를 모든 모듈에 자동으로 삽입합니다. 전체 설명은 컴파일 빌드를 참고하세요.
| 플래그 | 기본값 | 의미 |
|---|---|---|
entry | — | 진입점 .py 파일. |
-o, --output-dir | dist | 빌드 출력 디렉터리. |
--source-root | 진입점 파일 | 스캔/변환할 프로젝트 루트. |
--module | on | 단일 파일 네이티브 확장 모듈로 컴파일. |
--standalone | — | 대신 독립 실행형 앱 디렉터리로 컴파일. --module과 상호 배타적. |
--no-compile | off | 스캔 + 주입 + 임베드만 수행하고 네이티브 컴파일은 건너뜁니다. |
--keep-tmp | off | 중간 변환 디렉터리를 유지합니다. |
--model PATH | none | 모델을 암호화해 번들로 포함합니다(반복 지정 가능). |
--model-lock-passphrase | off | 번들된 모델에 대한 2단계 잠금(--model 1개 이상, 그리고 --bind-machine 필요). |
--model-trial / --model-expires-in / --model-expires-at | none | 번들된 모델의 유효 기간 — 서로 배타적입니다. |
--bind-machine | off | 머신 잠금 빌드: 라이선스 게이트가 모든 모듈에 컴파일되어 들어가며, 이 머신의 볼트 아래에서만 실행됩니다. 이 플래그가 없으면 기본값은 포터블 빌드입니다 — 게이트 없음, 어디서든 실행, 키 없는 모델. |
--passphrase / --emit-key | off | 포터블 빌드 전용: 번들 모델에 키 없는 기본값 대신 패스프레이즈에서 도출한 키 또는 생성해 출력한 공유 키를 사용합니다. |
run
.py 또는 .pya를 게이트 포함하여 실행합니다.
| 플래그 | 기본값 | 의미 |
|---|---|---|
entry | — | 실행할 파일. |
--app-version | 1.0.0 | 라이선스에 설정된 max_app_version과 대조해 검사하는 앱 버전. |
--passphrase | off | 복호화 패스프레이즈를 입력받습니다(또는 $MAGICLOCK_PASSPHRASE를 읽음) — 포터블 또는 2단계 산출물용. |
--key KEY | — | 포터블 산출물의 복호화 키(base64), 또는 $MAGICLOCK_DECRYPT_KEY를 읽습니다. |
deactivate
계정에서 이 머신을 제거합니다.
| 플래그 | 의미 |
|---|---|
--local-only | 시트를 해제하거나 서버에서 취소하지 않고 로컬 볼트만 지웁니다. |
--server URL | 해제 호출에 사용할 서버 URL. |
--token TOKEN | 해제 호출에 사용할 Bearer 토큰. |
skill
이 프로젝트에 Claude Code 스킬을 설치해서, AI 코딩 에이전트(Claude Code 등)가 MagicLock으로 이 프로젝트를 보호하는 방법을 알 수 있게 합니다.
magiclock skill [--dir DIR] [--force] [--print]| 플래그 | 의미 |
|---|---|
--dir DIR | 설치할 프로젝트 루트(기본값: 현재 디렉터리). |
--force | 기존 SKILL.md를 덮어씁니다. |
--print | 파일을 쓰는 대신 스킬 내용을 표준 출력으로 인쇄합니다. |
.claude/skills/magiclock-protect/SKILL.md를 작성하여, 어떤 보호 등급을 선택할지와 protect/build를 올바르게 실행하는 방법을 에이전트에게 알려줍니다.
completion
셸 탭 완성 스크립트를 출력합니다.
magiclock completion bash > /etc/bash_completion.d/magiclock
magiclock completion zsh > "${fpath[1]}/_magiclock"