MDM으로 Gnista를,
프로필 하나로.
팀 플랜이 있으면 IT 팀이 구성 프로필로 Gnista의 키를 배포하고 설정을 잠글 수 있어요. 커스텀 프로필을 설치할 수 있는 MDM이면 어디서든요. 여기 있는 건 모두 선택 사항이에요. MDM이 없는 팀은 그냥 키를 나눠 쓰면 돼요.
업데이트
작동 방식
Gnista는 자기 도메인 sh.gnista.Gnista의 관리형 환경설정을 읽어요. com.apple.ManagedClient.preferences 페이로드가 든 구성 프로필로 전달되고, MDM에 따라 custom settings나 preference file이라고 부르기도 해요. 프로필이 관리하는 설정은 Gnista에서 ‘조직에서 관리함’으로 표시되고, 거기서 바꿀 수 없어요.
관리 설정은 팀 키가 있을 때만 적용돼요. LicenceKey는 어떤 키로든 작동해요. 개인 키라면 Gnista는 나머지를 무시하고, 설정에 ‘중앙 관리에는 팀 플랜이 필요합니다.’라고 표시해요. 프로필에 키와 설정이 함께 있으면, Gnista는 키를 먼저 활성화한 뒤 설정을 적용해요.
LicenceKey와 DisplayMode를 뺀 모든 키는, 템플릿처럼 Forced 아래에 넣어 프로필이 강제할 때만 적용돼요. 모든 키는 선택 사항이고, Gnista가 모르는 키는 무시돼요.
키
| 키 | 유형 | 하는 일 |
|---|---|---|
LicenceKey | 문자열(String) | 아무도 키를 입력하지 않아도 Gnista를 활성화해요. Mac에 라이선스가 없는 동안 실행할 때마다 시도해요. 어떤 키로든 작동해요. |
EnabledAgents | 문자열 배열 | 이 에이전트들만 Gnista에 연결할 수 있고, 그 세션만 보여요. 이름은 아래에. |
ApprovalsAllowed | 불리언(Boolean) | false면 ‘Gnista에서 권한 요청에 응답’을 완전히 꺼요. 모든 에이전트가 직접 확인을 요청해요. |
ApprovalAgents | 문자열 배열 | Gnista에서 권한 요청에 응답할 수 있는 에이전트. |
CrashReportsMode | 문자열(String) | Gnista가 크래시 리포트를 다루는 방식: ask(크래시 후 물어봐요), always, never. |
AutomaticUpdates | 불리언(Boolean) | true면 자동 업데이트를 켜고 스위치를 잠가요. false면 Gnista가 스스로 업데이트를 확인하지 않아요. 업데이트를 직접 배포할 수 있어요. |
RemoteMachinesAllowed | 불리언(Boolean) | false면 원격 머신이 꺼져요. Gnista가 SSH 터널을 닫고, 설정에서 서버를 연결할 수 없어요. |
RemoteConnection | 문자열(String) | 원격 머신의 연결 방식: automatic(Gnista 자체 ssh, 포워딩), relay(Gnista 자체 ssh, 포워딩 없음: 일반 명령), manual(Gnista 자체 ssh 없음: ssh 설정의 한 줄로 사용자 자신의 세션이 전달). |
ListSummaryAllowed | 불리언(Boolean) | false면 ‘에이전트가 하는 일 설명’이 꺼져요. 이 Mac들에서는 Apple Intelligence가 줄의 문구를 절대 쓰지 않아요. |
DisplayMode | 문자열(String) | Gnista가 보이는 곳: notch, menuBar, both. 강제하면 잠기고, 템플릿처럼 한 번만 설정하면 사용자가 바꿀 수 있는 기본값이 돼요. |
에이전트 이름
EnabledAgents와 ApprovalAgents는 Gnista 헬퍼와 같은 이름으로 에이전트를 가리켜요.
| 이름 | 에이전트 |
|---|---|
claude | Claude Code |
cowork | Claude Cowork |
codex | Codex |
gemini | Gemini CLI |
copilot | GitHub Copilot |
opencode | OpenCode |
devin | Devin |
qwen | Qwen Code |
qwenwork | QwenWork |
qoder | Qoder CLI |
qoder-cn | Qoder CN |
qoderwork | QoderWork |
droid | Factory Droid |
cursor | Cursor |
antigravity | Antigravity |
vibe | Mistral Vibe |
codebuddy | CodeBuddy |
workbuddy | WorkBuddy |
kimi | Kimi Code |
kilo | Kilo Code |
mimocode | MiMoCode |
zcode | ZCode |
amp | Amp |
auggie | Auggie |
goose | Goose |
pi | Pi |
omp | Oh My Pi |
openhands | OpenHands |
grok | Grok Build |
trae | Trae |
trae-cn | Trae CN |
codewhale | Codewhale |
aider | Aider |
dsh | DeepSeek Harness |
VS Code의 Copilot은 copilot으로 쳐요. 커스텀 에이전트는 파일 이름을 따라요. ‘Gnista에서 권한 요청에 응답’은 claude, codex, devin, opencode, qwen, qoder, qoder-cn, codebuddy, workbuddy, droid, kilo, mimocode, zcode, kimi, omp에서 작동해요. ApprovalAgents에 다른 이름을 넣어도 달라지는 건 없어요.
프로필
모든 키가 든 완전한 프로필이에요. 템플릿도 같은 내용에, 키마다 설명이 붙어 있어요. 관리할 키만 남기고, 키를 넣고, 두 PayloadUUID 값을 직접 만든 값으로 바꾸세요(터미널에서 uuidgen 실행).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadDisplayName</key>
<string>Gnista</string>
<key>PayloadDescription</key>
<string>Gnista's licence key and settings for your team.</string>
<key>PayloadIdentifier</key>
<string>sh.gnista.Gnista.profile</string>
<key>PayloadOrganization</key>
<string>Your organisation</string>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>00000000-0000-4000-8000-000000000001</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDisplayName</key>
<string>Gnista settings</string>
<key>PayloadIdentifier</key>
<string>sh.gnista.Gnista.profile.preferences</string>
<key>PayloadType</key>
<string>com.apple.ManagedClient.preferences</string>
<key>PayloadUUID</key>
<string>00000000-0000-4000-8000-000000000002</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadContent</key>
<dict>
<key>sh.gnista.Gnista</key>
<dict>
<key>Forced</key>
<array>
<dict>
<key>mcx_preference_settings</key>
<dict>
<key>LicenceKey</key>
<string>GNISTA-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</string>
<key>EnabledAgents</key>
<array>
<string>claude</string>
<string>codex</string>
</array>
<key>ApprovalsAllowed</key>
<true/>
<key>ApprovalAgents</key>
<array>
<string>claude</string>
</array>
<key>CrashReportsMode</key>
<string>never</string>
<key>AutomaticUpdates</key>
<false/>
<key>RemoteMachinesAllowed</key>
<true/>
<key>RemoteConnection</key>
<string>relay</string>
</dict>
</dict>
</array>
<key>Set-Once</key>
<array>
<dict>
<key>mcx_data_timestamp</key>
<date>2026-10-15T00:00:00Z</date>
<key>mcx_preference_settings</key>
<dict>
<key>DisplayMode</key>
<string>notch</string>
</dict>
</dict>
</array>
</dict>
</dict>
</dict>
</array>
</dict>
</plist>사용자가 아니라 Mac에 적용하세요(템플릿처럼 기기 수준으로).
Jamf Pro
- Jamf Pro에서 Computers, Configuration Profiles로 가서 Upload를 고르세요. 수정한
gnista.mobileconfig를 선택하세요. - General 페이로드를 확인하세요. 수준은 Computer, 배포 방법은 Install Automatically.
- Gnista를 쓰는 컴퓨터나 스마트 그룹으로 범위를 정하고 저장하세요.
Jamf에서 직접 만들고 싶다면? 새 프로필을 만들고 Application & Custom Settings를 추가한 뒤, 키만 든 속성 목록을 업로드하고 환경설정 도메인에 sh.gnista.Gnista를 넣으세요.
Kandji
- Kandji에서 Library를 열고 Custom Profile을 추가하세요.
- 수정한
gnista.mobileconfig를 업로드하고, Mac에 설치되도록 되어 있는지 확인하세요. - Gnista를 쓰는 Mac이 있는 Blueprints에 할당하고 저장하세요.
Microsoft Intune
- Intune 관리 센터에서 Devices, macOS, Configuration으로 가서 새 정책을 만드세요.
- 프로필 유형으로 Templates를, 그다음 Custom을 고르세요.
- 이름을 붙이고, 기기 채널을 고른 뒤, 수정한
gnista.mobileconfig를 업로드하세요. - Gnista를 쓰는 Mac이 있는 기기 그룹에 할당하고 만드세요.
Intune의 Preference file 템플릿도 돼요. 환경설정 도메인에 sh.gnista.Gnista를 넣고, 키만 든 속성 목록을 업로드하세요.
Mosyle
- Mosyle에서 Management, Custom Profiles로 가서 새 프로필을 추가하세요.
- 수정한
gnista.mobileconfig를 업로드하세요. - Gnista를 쓰는 기기나 기기 그룹에 할당하고 저장하세요.
Mac에서 확인하기
프로필은 시스템 설정 ▸ 일반 ▸ 기기 관리에 보여요. 설정은 Mac의 관리형 환경설정에 들어가요.
defaults read "/Library/Managed Preferences/sh.gnista.Gnista"Gnista 설정에서는 관리되는 설정이 ‘조직에서 관리함’으로 보이고, 설정 ▸ Gnista에 관하여 ▸ 라이선스에 팀 라이선스가 보여요. 배포 전에 프로필을 시험해 보려면, 테스트용 Mac에서 더블클릭한 뒤 시스템 설정에서 설치하세요.