CLI 레퍼런스

모든 magiclock 하위 명령과 플래그를 한곳에 모았습니다.

모든 것은 하나의 명령입니다: magiclock <subcommand> [options]. magiclock --version은 설치된 버전을 출력하고, 인자 없이 magiclock만 실행하면 도움말을 출력합니다.

activate

이 머신을 인증하고 프로비저닝합니다. 멱등적(idempotent)이므로 다시 실행해도 안전합니다.

플래그의미
--server URL라이선스 서버 URL(저장된 세션, 그다음 $MAGICLOCK_SERVER 순으로 대체됩니다).
--token TOKENBearer 토큰(저장된 세션, 그다음 $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]
                  [--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 NAMEai_model이 산출물을 잠금 해제하는 데 필요한 라이선스 역량.
--removeoff암호화 후 평문 파일을 삭제합니다.

build

앱을 네이티브 바이너리로 컴파일하면서 라이선스 게이트를 모든 모듈에 자동으로 삽입합니다. 전체 설명은 컴파일 빌드를 참고하세요.

플래그기본값의미
entry진입점 .py 파일.
-o, --output-dirdist빌드 출력 디렉터리.
--source-root진입점 파일스캔/변환할 프로젝트 루트.
--moduleon단일 파일 네이티브 확장 모듈로 컴파일.
--standalone대신 독립 실행형 앱 디렉터리로 컴파일. --module과 상호 배타적.
--no-compileoff스캔 + 주입 + 임베드만 수행하고 네이티브 컴파일은 건너뜁니다.
--keep-tmpoff중간 변환 디렉터리를 유지합니다.
--model PATHnone모델을 암호화해 번들로 포함합니다(반복 지정 가능).
--model-lock-passphraseoff번들된 모델에 대한 2단계 잠금(--model 1개 이상, 그리고 --bind-machine 필요).
--model-trial / --model-expires-in / --model-expires-atnone번들된 모델의 유효 기간 — 서로 배타적입니다.
--bind-machineoff머신 잠금 빌드: 라이선스 게이트가 모든 모듈에 컴파일되어 들어가며, 이 머신의 볼트 아래에서만 실행됩니다. 이 플래그가 없으면 기본값은 포터블 빌드입니다 — 게이트 없음, 어디서든 실행, 키 없는 모델.
--passphrase / --emit-keyoff포터블 빌드 전용: 번들 모델에 키 없는 기본값 대신 패스프레이즈에서 도출한 키 또는 생성해 출력한 공유 키를 사용합니다.

run

.py 또는 .pya를 게이트 포함하여 실행합니다.

플래그기본값의미
entry실행할 파일.
--app-version1.0.0라이선스에 설정된 max_app_version과 대조해 검사하는 앱 버전.
--passphraseoff복호화 패스프레이즈를 입력받습니다(또는 $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으로 이 프로젝트를 보호하는 방법을 알 수 있게 합니다.

shell
magiclock skill [--dir DIR] [--force] [--print]
플래그의미
--dir DIR설치할 프로젝트 루트(기본값: 현재 디렉터리).
--force기존 SKILL.md를 덮어씁니다.
--print파일을 쓰는 대신 스킬 내용을 표준 출력으로 인쇄합니다.

.claude/skills/magiclock-protect/SKILL.md를 작성하여, 어떤 보호 등급을 선택할지와 protect/build를 올바르게 실행하는 방법을 에이전트에게 알려줍니다.

completion

셸 탭 완성 스크립트를 출력합니다.

shell
magiclock completion bash > /etc/bash_completion.d/magiclock
magiclock completion zsh  > "${fpath[1]}/_magiclock"