
Orca에 추가된 플러그인 기능과 마켓플레이스 조사
요약
AI 에이전트 개발 환경인 Orca에 플러그인 기능과 마켓플레이스가 추가되었습니다. 이 마켓플레이스는 VS Code와 달리 플러그인의 목록을 모아놓은 취득처 역할을 하며, 사용자는 여기서 콘텐츠 팩, 패널 등을 설치할 수 있습니다. 플러그인은 개별 Git 리포지토리에 위치하며, Orca는 공식 마켓플레이스 목록을 가져와 로컬에 저장합니다.
핵심 포인트
- Orca의 마켓플레이스는 플러그인 본체가 아닌 취득처 목록입니다.
- 플러그인 기능은 현재 실험적인(experimental) 단계로 제공됩니다.
- 공식 마켓플레이스에는 다양한 테마, 아이콘, 스킬 등 8개의 플러그인이 등록되어 있습니다.
AI 에이전트용 개발 환경인 「Orca」에 v1.4.162 버전으로 플러그인 기능과 마켓플레이스(Marketplace)가 추가되었습니다.
Orca의 마켓플레이스는 VS Code의 확장 기능 스토어(Extension Store)와는 구조가 다릅니다. 플러그인 본체를 보관하는 장소가 아니라, 각 플러그인의 취득처를 모아놓은 목록입니다.
주의: 플러그인 기능은 experimental(시험적인 기능)입니다. 다음 내용은 2026년 8월 시점의 macOS 버전에서 확인한 결과입니다. 버전에 따라 파일 형식이나 화면 표시가 달라질 수 있습니다.
공식 changelog(변경 로그)에는 다음과 같이 적혀 있습니다.
Plugins (experimental) — enable per plugin with consent, browse marketplaces, and install content packs, panels, and workers
이를 한국어로 번역하면, "플러그인마다 이용자의 동의를 얻어 활성화하고, 마켓플레이스에서 콘텐츠 팩(content packs), 패널(panels), 워커(workers)를 설치할 수 있다"는 내용입니다.
먼저 결론을 정리하겠습니다.
- 마켓플레이스의 실체는 Git 리포지토리(Repository)이며, 내용은 각 플러그인의 취득처를 모아놓은 목록이었습니다.
- 플러그인의 매니페스트(Manifest)는 VS Code 확장 기능의 것과 매우 유사했습니다.
- 공식 마켓플레이스 목록에는 8개가 있는데, Orca 화면에 표시되는 것은 3개뿐이었습니다.
이 글을 읽는 데 플러그인 개발 지식은 필요하지 않습니다. 설정 항목의 역할부터 차례대로 살펴보겠습니다.
Orca가 플러그인을 찾아 설치하기까지의 흐름은 다음과 같습니다.
Orca
│ ① 마켓플레이스의 목록을 가져온다
▼
...
마켓플레이스가 보유하는 정보는 플러그인의 이름, 설명, 취득처 URL, 버전입니다. 플러그인 본체는 각각 별도의 Git 리포지토리에 위치합니다.
이 전체적인 구조를 바탕으로, 먼저 공식 마켓플레이스의 내용을 확인하겠습니다.
Orca는 기동 시 공식 마켓플레이스의 목록을 가져와 PC 내에 복사본을 저장합니다. macOS에서의 저장 위치는 다음과 같습니다.
~/Library/Application Support/Orca/plugins-data/marketplaces/
├── sources.json ← 등록된 마켓플레이스 목록
└── snapshots/
...
sources.json에는 Orca가 참조하는 마켓플레이스의 취득처가 적혀 있습니다. snapshots의 JSON은 가져온 목록의 복사본입니다.
목록의 이름은 「Orca Official Plugins」이며, 8개의 플러그인이 등록되어 있었습니다.
| 플러그인 | 카테고리 | 설치 시 변화 |
|---|---|---|
stablyai.orca-midnight-theme | themes | 어두운 색상 테마가 추가됨 |
stablyai.orca-nord-theme | themes | 한색 계열로 대비를 낮춘 테마가 추가됨 |
stablyai.orca-minimal-icons | icons | 단색의 작은 파일 아이콘이 추가됨 |
stablyai.orca-solarized-terminal | terminal-themes | 터미널에 Solarized Dark 색상이 추가됨 |
stablyai.orca-navigation-shortcuts | keybindings | 작업 화면이나 검색을 여는 키보드 단축키가 추가됨 |
stablyai.orca-workflow-skills | skills | 계획이나 리뷰에 사용하는 에이전트용 스킬이 추가됨 |
stablyai.orca-multipass-recipes | vm-recipes | 가상 머신을 만들기 위한 VM 레시피가 추가됨 |
stablyai.orca-portuguese | languages | 표시 언어를 포르투갈어(브라질)로 전환할 수 있음 |
8개 중 4개는 테마, 아이콘, 터미널 색상 등 외관을 바꾸는 플러그인입니다.
목록에서는 하나의 플러그인에 여러 카테고리를 부여할 수 있습니다. 예를 들어 테마에는 종류를 나타내는 themes와 공식 카테고리인 official이 붙어 있습니다.
"categories": ["themes", "official"]
official은 8건 모두에 붙어 있습니다.
반면, changelog(변경 이력)에서 언급했던 「패널(Panel)」과 「워커(Worker)」에 해당하는 플러그인은 이 8건에 포함되어 있지 않습니다. 현재 시점에서는 테마나 아이콘 등을 추가하는 플러그인들이 나열되어 있습니다.
설정에서 플러그인 화면을 열면, 상단에 All 3라고 표시되었습니다. JSON 목록에는 8건이 있지만, 화면에 나열되는 것은 다음 3건뿐입니다.
| 화면에 표시되는 것 | 카테고리 |
|---|---|
| Orca Multipass Recipes | vm-recipes |
| ... |
표시되지 않는 5건은 테마 2건, 아이콘 1건, 터미널 색상 구성(Color scheme) 1건, 에이전트용 가이드(Manual) 1건입니다. 외관을 바꾸는 4건이 모두 포함되어 있습니다.
검색이나 필터링을 사용하지 않았으며, 리포지토리(Repository)에도 8건이 등록되어 있습니다. Orca v1.4.173이 지원하지 않는 종류를 제외하고 있을 가능성은 있지만, 공식적인 설명은 찾을 수 없었습니다. 확인된 것은 「목록은 8건, 화면은 3건」이라는 사실뿐입니다.
화면에 나타난 3건 중 Orca Navigation Shortcuts는 Orca에 처음부터 포함되어 있습니다. 남은 2건은 마켓플레이스(Marketplace)에서 추가할 수 있습니다.
설치된 플러그인을 기록하는 plugins.lock.json을 보면, Orca Navigation Shortcuts의 취득처는 다음과 같습니다.
$ cat ~/Library/Application\ Support/Orca/plugins/plugins.lock.json
{
"plugins": {
...
source.kind의 값은 bundled입니다. 이는 「앱에 동봉되어 있음」을 의미합니다.
Orca Navigation Shortcuts는 사용자가 추가한 것이 아닙니다. Orca는 처음부터 들어 있는 기능도 플러그인으로서 관리합니다.
여기서부터는 마켓플레이스가 어디에서 오는지 확인하겠습니다. 단서가 되는 것은 등록된 마켓플레이스의 취득처를 저장한 sources.json입니다.
{
"sources": [{
"source": {
...
주목할 항목은 kind, url, ref 세 가지입니다.
kind: git: Git 리포지토리에서 가져옴url: 취득처는 GitHub의stablyai/orca-pluginsref: main:main브랜치를 참조
공식 마켓플레이스의 실체는 이 Git 리포지토리입니다. Orca는 그 내용을 가져와 PC 내에 저장합니다.
저장된 목록에는 취득처를 나타내는 marketplaceCommit도 기록됩니다. 커밋 해시(Commit hash)란 Git 리포지토리의 특정 시점을 식별하는 문자열입니다.
마켓플레이스 목록에는 각 플러그인의 취득처가 적혀 있습니다. 다음은 Orca Midnight Theme의 예입니다.
{
"id": "stablyai.orca-midnight-theme",
"source": {
...
url은 플러그인 전용 Git 리포지토리를 가리키며, ref: v1.0.0은 가져올 버전을 v1.0.0 태그로 지정하고 있습니다.
마켓플레이스는 플러그인 본체를 가지고 있지 않습니다. 「어느 리포지토리에서, 어느 버전을 가져올지」만을 관리합니다. 플러그인 본체는 각각의 Git 리포지토리에 놓여 있습니다.
npm이나 VS Code의 확장 기능 스토어(Extension Store)가 「상품을 보관하는 창고」라면, Orca의 마켓플레이스는 「상품의 보관 장소를 정리한 카탈로그」에 가까운 구조입니다.
이 구조에는 다음과 같은 특징이 있습니다.
- 독자적인 마켓플레이스를 만들 수 있음: 정해진 형식의 JSON을 배치한 Git 리포지토리를
sources.json에 추가할 수 있습니다. 공식 마켓플레이스와 독자적인 마켓플레이스를 병용할 수 있습니다. - 심사를 거쳤는지 여부는 JSON만으로는 판단할 수 없음: 목록에는 심사 상태를 나타내는 항목이 없습니다.
official
카테고리에 작성된 문자열입니다. 공식 마켓플레이스가 운영상 어떻게 심사하고 있는지는 확인할 수 없었습니다.
- 取得하는 버전을 고정할 수 있음: 목록이
v1.0.0을 가리키고 있는 동안에는, 제작자가 새로운 버전을 공개해도 획득 대상은 변하지 않습니다.
버전을 고정하면, 신규 버전이 공개되어도 이용자의 환경은 즉시 변하지 않습니다. 다만, Git의 태그 자체는 변경될 수 있으므로, 커밋 해시 (Commit Hash)가 변경을 추적하는 단서가 됩니다.
주의: 독자적인 마켓플레이스에서는 official이라는 문자열도 자유롭게 붙일 수 있습니다. 표시만 보고 안전성을 판단하지 말고, 운영자와 플러그인의 획득처를 확인해야 합니다.
구조가 정말 이것뿐인지, 공식 마켓플레이스를 clone 하여 확인했습니다. clone은 Git 리포지토리 (Repository)를 로컬로 복사하는 명령어입니다.
$ git clone --depth 1 https://github.com/stablyai/orca-plugins.git
$ ls orca-plugins
orca-marketplace.json
파일은 orca-marketplace.json 하나뿐입니다. 플러그인 본체는 포함되어 있지 않습니다.
마켓플레이스에서 플러그인을 설치하면, plugins.lock.json에 두 개의 커밋 해시 (Commit Hash)가 남습니다.
{
"marketplace": {
"resolvedCommit": "43287da85a4ff1c6a902f455b3eb2c01f7fd46be"
...
두 값은 각각 다음 시점을 나타냅니다.
| 기록되는 위치 | 나타내는 것 |
|---|---|
marketplace.resolvedCommit | 어느 시점의 마켓플레이스 목록을 참조했는지 |
resolvedCommit | 플러그인 본체의 어느 커밋 (Commit)을 설치했는지 |
이 두 가지가 있으면, "어느 목록을 보고, 어느 플러그인을 설치했는지"를 나중에 추적할 수 있습니다. 태그가 변경되더라도, 기록된 커밋 해시를 통해 당시의 상태를 식별할 수 있습니다.
하지만 커밋 해시가 남는 것과 플러그인이 안전한 것은 별개입니다. 커밋 해시로 알 수 있는 것은 "무엇을 설치했는가"이며, 그 내용이 안전한지 여부는 아닙니다.
각 플러그인의 루트에는 orca-plugin.json이 있습니다. 이는 플러그인의 이름, 대응 버전, 추가하는 기능 등을 Orca에 전달하는 매니페스트 (Manifest)입니다.
설치된 Orca Navigation Shortcuts를 예로 들어 보겠습니다.
{
"id": "orca-navigation-shortcuts",
"publisher": "stablyai",
...
여기서 JSON 전체를 이해할 필요는 없습니다. 주요 항목과 VS Code 확장 매니페스트 (Extension Manifest)와의 대응은 다음과 같습니다.
| Orca 항목 | 의미 | VS Code 대응 항목 |
|---|---|---|
publisher + id | 공개자와 플러그인 이름 | publisher + name |
version | 플러그인의 버전 | version |
engines.orca | 대응하는 Orca 버전 | engines.vscode |
contributes | 추가하는 기능이나 데이터 | contributes |
pluginApi | Orca의 플러그인 API 버전 | 해당 사항 없음 |
capabilities | 요구하는 권한 | 해당 사항 없음 |
특히 중요한 것이 contributes입니다. "이 플러그인이 Orca에 무엇을 추가하는가"를 선언합니다.
두 가지 플러그인을 비교해 보겠습니다. 테마를 추가하는 플러그인은 themes를 가집니다.
"contributes": {
"themes": [{ "id": "midnight", "label": "Orca Midnight", "path": "themes/midnight.json" }]
}
에이전트(Agent)를 위한 지침서인 스킬 (Skill)을 추가하는 플러그인은 skills를 가집니다.
에이전트(Agent)를 위한 지침서인 스킬(Skill)을 추가하는 플러그인은 skills를 가집니다.
"contributes": {
"skills": [{ "path": "skills", "providers": ["codex", "claude", "agent-skills"] }]
}
providers는 해당 스킬을 이용할 수 있는 에이전트를 나타냅니다. 이 예시에서는 Codex, Claude, Agent Skills 지원 에이전트가 대상입니다. 하나의 플러그인에서 여러 에이전트에 동일한 스킬을 추가할 수 있습니다.
VS Code의 확장 매니페스트와 큰 차이점은 capabilities입니다. Orca는 이 항목으로 플러그인이 필요로 하는 권한을 선언할 수 있게 합니다.
확인한 3건을 비교해 보면, 모두 capabilities가 []였습니다. 이는 요구하는 권한이 없음을 나타냅니다.
| 플러그인 | contributes | capabilities |
|---|---|---|
orca-navigation-shortcuts | commands, keybindings | [] |
orca-midnight-theme | themes | [] |
orca-workflow-skills | skills | [] |
나머지 5건은 확인하지 않았기 때문에, 공식의 8건 모두가 비어있다고 단정할 수는 없습니다.
화면에 표시된 Orca Multipass Recipes를 설치합니다. 이 플러그인이 추가하는 것은 가상 머신을 만들기 위한 설정 파일입니다. Orca에서는 이 설정 파일을 "VM 레시피"라고 부릅니다.
플러그인 화면 상단에는 기능 전체의 스위치와 다음 설명이 있습니다.
설치된 플러그인을 감지하여 개별적으로 활성화할 수 있습니다.
검토하고 활성화하기 전까지는 아무것도 실행되지 않습니다. 워커(Worker)는 항상 이 컴퓨터에서 실행되며, SSH 워크스페이스 액션은 Orca를 거칩니다.
카드에서 "설치"를 누르자 확인 다이얼로그가 나타났습니다.
다이얼로그에는 버전, 배포처, 공개자에 더해 "1개의 VM 레시피"라고 표시되었습니다. 이는 매니페스트의 contributes.vmRecipes에 정의된 1건의 레시피를 가리킵니다.
"contributes": {
"vmRecipes": [{ "path": "recipes/ubuntu-lts.json" }]
},
...
이 화면에서는 VM 레시피가 1건 추가되는 것을 확인할 수 있습니다. capabilities가 비어있기 때문에, 권한에 관한 항목은 표시되지 않습니다.
"플러그인 설치"를 누르자 다음 파일이 추가되었습니다.
stablyai.orca-multipass-recipes/
├── 577329...4d7b09/
│ ├── orca-plugin.json
...
추가된 본체는 recipes/ubuntu-lts.json입니다. 프로그램을 추가하는 것이 아니라, Orca의 기존 기능이 읽어들이는 설정 파일을 추가하는 플러그인임을 알 수 있습니다.
마지막으로, Orca가 플러그인의 내용과 이용자의 동의를 어떻게 기록하는지 살펴봅니다.
설치된 플러그인 정보는 plugins.lock.json에 저장됩니다. 거기에는 contentHash와 capabilityHash라는 두 개의 해시 값이 있었습니다. 먼저, 기본 제공되는 Orca Navigation Shortcuts의 기록을 예로 듭니다.
해시는 데이터로부터 계산된 "지문" 같은 문자열입니다. 원본 데이터가 바뀌면 해시도 바뀌기 때문에, 내용의 차이를 구별하는 데 사용됩니다.
contentHash는 설치되는 디렉토리 이름에 사용되었습니다.
~/Library/Application Support/Orca/plugins/stablyai.orca-navigation-shortcuts/
├── ce3a146b...cc3a777/ ← contentHash와 같은 이름
│ └── orca-plugin.json
...
플러그인 본체는 contentHash별 디렉토리에 저장됩니다. current에는 현재 사용하는 디렉토리의 해시가 한 줄로 적혀 있었습니다.
이 구조라면, 업데이트 전후 파일을 각각 다른 디렉토리에 저장할 수 있습니다. 사용할 디렉토리는 current
값으로 전환할 수 있습니다.
capabilityHash와 동일한 값은 설치 원본 정보를 저장하는 .install-provenance/ 디렉토리에도 있으며, 여기서는 consentFingerprint(동의 내용의 지문)라는 이름이 붙어 있습니다.
이름만 보면 capabilities의 내용으로부터 계산된 값처럼 보입니다. 하지만 2개의 플러그인을 비교해 보면 그것만으로는 설명할 수 없습니다.
| 플러그인 | capabilities | capabilityHash |
|---|---|---|
orca-navigation-shortcuts | [] | sha256-d53vynaH... |
orca-multipass-recipes | [] | sha256-3+lt7Q88... |
둘 다 capabilities는 비어 있지만, capabilityHash는 서로 다릅니다. 권한 목록만으로 계산하고 있다면 같은 값이 되어야 합니다.
설치 시 다이얼로그에는 contributes에 작성된 추가 내용도 표시됩니다. 따라서 capabilityHash에는 권한뿐만 아니라 플러그인이 추가하는 내용도 반영되어 있을 가능성이 있습니다.
다만, 계산식은 공개되어 있지 않습니다. 여기서부터는 확인된 값을 바탕으로 한 추측입니다.
동일한 값은 Orca의 설정 파일 profiles/local-default/orca-data.json에도 저장되어 있었습니다.
"pluginSystemEnabled": true,
"disabledPlugins": [],
"pluginConsents": {
...
pluginConsents에 있는 것은 직접 추가한 orca-multipass-recipes뿐이며, 동봉된 orca-navigation-shortcuts는 없습니다. 사용자가 설치에 동의한 플러그인을 기록하는 항목으로 생각됩니다.
Orca가 이 값을 언제, 어떻게 대조하는지는 확인할 수 없었습니다. 하지만 현재 값과 기록된 값을 비교하면, 동의한 후에 확인 대상이 변경되었는지 여부를 감지할 수 있습니다.
이번에 확인한 플러그인은 권한을 요구하지 않았지만, 향후 권한 추가나 내용 변경을 구분할 수 있는 형태로 동의 기록이 남아 있었습니다.
Orca의 플러그인 기능을 조사하여 알아낸 점은 다음 5가지입니다.
- 마켓플레이스(Marketplace)는 플러그인 본체가 아니라 취득처를 모아둔 카탈로그입니다.
- 공식 목록에는 8개가 있지만, Orca v1.4.173 화면에는 3개만 표시되었습니다.
- 플러그인은 각각 독립된 Git 리포지토리(Repository)에서 가져옵니다.
- 매니페스트(Manifest)의
contributes가 추가 내용을,capabilities가 필요한 권한을 나타냅니다. - 설치 시에는 취득 원본의 커밋(Commit)과 사용자의 동의에 관한 해시(Hash)가 기록됩니다.
이번에 확인된 것은 테마나 설정 파일 등 Orca의 기존 기능이 읽어들이는 데이터를 추가하는 플러그인이 중심입니다. 변경 이력(Changelog)에 있는 패널이나 워커(Worker)의 사례는 공식 마켓플레이스에는 아직 없었습니다.
한편, 매니페스트에는 권한을 선언하는 칸이 있으며, 동의한 내용을 식별하는 해시도 남습니다. 이번에 확인한 데이터 추가형 플러그인뿐만 아니라, 더 많은 권한을 사용하는 플러그인도 다룰 수 있는 설계임을 알 수 있습니다.
기사 작성 시 확인한 공식 정보와 리포지토리입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기