GitHub 트렌딩 딥다이브 · 2026-06-22

Palmier Pro 딥다이브
— AI 에이전트가 직접 편집하는 macOS 영상 편집기

Swift로 처음부터 만든 macOS 네이티브 영상 편집기. 타임라인 안에서 생성형 AI로 영상·이미지·오디오를 만들고, 내장 MCP 서버 하나로 Claude·Cursor·Codex 같은 AI 에이전트가 타임라인을 직접 편집한다. "AI 런치 영상"을 만들던 YC 스타트업이, 웹에서 생성→다운로드→임포트→재편집을 무한 반복하던 고통에서 출발해 만들었다. (저장소: palmier-io/palmier-pro · Swift 99% · 약 4.3만 줄 · macOS 26 Tahoe · GPLv3)

목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어/시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

"영상 편집기를 사람과 AI 에이전트가 함께 쓰는 작업대로."

한 줄로

Palmier Pro는 타임라인 안에서 AI가 영상을 만들고 편집하는, Swift로 만든 macOS 네이티브 영상 편집기다.

보통 AI 영상 제작은 이렇게 흐른다 — 웹 서비스에서 클립을 생성하고, 노트북에 내려받고, 편집 프로그램으로 임포트하고, 잘라 붙이고, 다시 마음에 안 들면 웹으로 돌아가 또 생성한다. Palmier Pro는 이 왕복을 없앤다. 편집기 자체가 단일 진실원(single source of truth)이 되어, 생성·편집·재생성이 전부 한 타임라인 안에서 일어난다. 게다가 편집기를 MCP 서버로 열어, Claude 같은 에이전트가 "이 장면 뒤에 3초짜리 전환 영상 만들어 넣어줘"를 직접 실행한다.

먼저 핵심 용어 MCP부터 풀어두자. AI 에이전트(Claude·Cursor 등)는 기본적으로 "글을 읽고 쓰는" 능력만 있다. 외부 프로그램을 조작하려면 표준화된 연결 통로가 필요한데, 그게 MCP(Model Context Protocol)다. Palmier Pro는 앱을 켜면 자기 자신을 MCP 서버로 노출한다 — 즉 "영상 편집기를 조작하는 도구 모음"을 에이전트에게 제공하는 것이다.

용어
MCP (Model Context Protocol) — 모델 컨텍스트 프로토콜
AI 에이전트가 외부 도구·데이터에 접근하는 표준 규약. "USB-C 포트"에 비유된다 — 어떤 앱이든 MCP 서버로 만들어두면, Claude·Cursor·Codex 등 어떤 MCP 클라이언트든 똑같이 꽂아 쓸 수 있다. Palmier Pro는 앱을 켜면 http://127.0.0.1:19789/mcp에 MCP 서버를 띄운다.
용어
네이티브 앱 (vs Electron)
운영체제의 언어·프레임워크로 직접 만든 앱. Palmier Pro는 Swift + AVFoundation + Metal로 만든 진짜 macOS 앱이라, 웹 기술을 브라우저째 끼워 파는 Electron 앱보다 가볍고 빠르고 영상 처리에 강하다.

중요한 구분 하나. 오픈소스는 "편집기 + MCP 서버 + 에이전트 챗"까지다. 영상·이미지를 실제로 만들어내는 생성형 AI 처리 부분만 클로즈드(유료)다. 그래서 AI 없이 그냥 무료 영상 편집기(CapCut·프리미어 대용)로 써도 되고, 내 Anthropic API 키를 꽂아 에이전트 편집까지 공짜로 써볼 수도 있다. 라이선스는 GPLv3, 만든 곳은 YC 스타트업 Palmier, Inc.다.

2왜 주목받는가

"생성형 AI"와 "영상 편집기" 사이의 단절을, 타임라인을 중심에 두고 메운다.

2026년 현재 생성형 영상 모델(Seedance·Kling·Veo 등)은 폭발적으로 좋아졌다. 그런데 정작 그걸로 "제대로 된 영상 한 편"을 만들려면 고통이 시작된다. 모델은 대부분 웹에 살고, 편집은 별도 프로그램에서 해야 하기 때문이다.

기존 워크플로의 함정
"웹에서 생성 → 다운로드 → 임포트 → 재편집 → 또 생성"의 무한 왕복

한 컷을 고치려고 매번 웹↔편집기를 오간다. 프로젝트가 커지면 각 샷의 v1·v2·v3 파일이 폴더에 쌓여 이름을 손으로 관리해야 하고, 맥락은 여기저기 흩어진다(스크립트는 Claude에, 생성은 웹 서비스 챗에). 컨텍스트 스위칭만으로 하루가 간다.

Palmier Pro의 해결
타임라인이 단일 진실원 — 생성·편집·재생성이 한곳에서

모든 소재가 같은 프로젝트 안에 산다. 임포트/익스포트 왕복 없이 클립을 제자리에서 재생성·교체한다(in-line replace). 그리고 내 AI 에이전트가 곧 편집 조수가 된다 — 스크립트 작성·생성·타임라인 편집을 한 대화에서 시킨다.

트렌딩을 끌어올린 진짜 한 방은 따로 있다. "비디오 편집기를 MCP 서버로 열었다"는 점이다. 이건 단순 기능이 아니라 철학이다 — 만든 사람들은 Palmier Pro를 "사람과 에이전트가 동시에 쓰는 UI"로 본다. 같은 타임라인을, 사람은 마우스로 만지고 에이전트는 도구 호출로 만진다.

비유

기존 = 주방(생성)과 식탁(편집)이 다른 건물 — 요리 하나 고치려면 매번 길을 건너야 한다.
Palmier Pro = 오픈 키친 — 만드는 곳과 차리는 곳이 한 공간이라, 셰프(나)와 보조(AI 에이전트)가 같은 도마 위에서 바로바로 고친다.

경쟁 제품과 무엇이 다른가

구분일반 편집기(프리미어·CapCut)웹 생성 서비스Palmier Pro
AI 생성 통합약함(플러그인)강함(본업)타임라인 내장
에이전트 조작불가제한적MCP로 전체 개방
구현네이티브/무거움네이티브 Swift(가벼움)
소스 공개클로즈드클로즈드오픈소스(GPLv3)
가격구독종량/구독편집기 무료(생성만 유료)

물론 솔직한 한계도 README가 명시한다. 아직 효과·전환·색보정·마스킹·그래픽이 없다. 만든 팀도 "AI 영상 만들기엔 충분했지만, AI를 빼면 꽤 단출한 편집기"라고 인정하며, 그래서 무료·오픈소스로 풀어 커뮤니티와 함께 키우겠다고 한다. 즉 지금 주목 포인트는 "완성된 편집기"가 아니라 "에이전트-네이티브 편집기라는 새 카테고리"다.

3기술 스택 전체 지도

UI는 SwiftUI+AppKit, 영상은 AVFoundation, AI는 MCP+Anthropic, 백엔드는 Convex. 전부 Swift 한 언어로.

Palmier Pro는 약 4.3만 줄의 Swift(99%)로 된 단일 언어 프로젝트다. 의존성은 SPM(Swift Package Manager)으로 관리하며, 직접 의존성이 9개뿐일 만큼 군더더기가 적다. 영역별로 "무엇이 무엇을 담당하는지" 지도를 보자.

레이어핵심 기술역할
언어·플랫폼Swift 6.2 · macOS 26 Tahoe · arm64 전용전체 코드. 비샌드박스 Developer ID 앱(io.palmier.pro).
UI 골격SwiftUI + AppKit 하이브리드NSApplication을 직접 띄우고(@main 없음), 창은 AppKit, 화면 내부는 SwiftUI 뷰.
상태 관리@Observable + @MainActor애플의 최신 Observation 프레임워크. ObservableObject·TCA 안 씀.
영상 엔진AVFoundation(AVMutableComposition·AVPlayer·AVAssetExportSession)재생·합성·내보내기. 커스텀 렌더러 없이 AV 합성으로 처리.
그래픽(좁게)Metal · CoreImage · CoreAnimation알파 영상 정규화, 이미지→영상 변환, 자막 오버레이 등 국소적 용도.
AI 에이전트MCP Swift SDK 0.12 · Anthropic Messages APIMCP 서버 + 인앱 챗. 둘이 같은 도구·프롬프트 공유.
백엔드·인증Convex(리액티브 RPC) · Clerk(인증)생성 작업 제출/구독, 모델 카탈로그, 크레딧, 로그인.
온디바이스 MLApple Speech(SpeechAnalyzer) · SigLIP2 CoreML · swift-transformers자막/전사(transcription), 의미 기반 영상 검색. 클라우드 불필요.
운영 도구Sparkle 2(자동 업데이트) · Sentry(에러) · Lottie · DSWaveformImage업데이트 배포, 크래시 리포팅, 로티 애니메이션, 오디오 파형 썸네일.
테스트Swift Testing(XCTest 아님)60개 파일·약 9.7천 줄. @Suite/@Test/#expect 신문법.
용어
AVFoundation
애플이 제공하는 영상·오디오 처리 표준 프레임워크. 재생(AVPlayer), 여러 클립을 한 타임라인으로 합치기(AVMutableComposition), 파일로 내보내기(AVAssetExportSession)를 다 담당한다. Palmier Pro의 영상 심장.
용어
Convex · Clerk
Convex=실시간 반응형 백엔드. "생성 작업 상태가 바뀌면 자동으로 화면에 밀어주는" 구독(subscription) 모델이라, 폴링(주기적 새로고침) 없이 진행률이 흐른다. Clerk=로그인·세션 토큰(JWT)을 처리하는 인증 SDK. 생성형 AI의 과금·계정이 이 둘 위에 올라간다.
용어
SigLIP 2 · CoreML
SigLIP=이미지와 글을 같은 좌표(벡터)로 바꾸는 비전 모델. Palmier Pro는 이걸 CoreML(애플 온디바이스 추론 엔진)로 돌려, "노을 지는 바닷가 장면 찾아줘" 같은 의미 기반 영상 검색을 인터넷 없이 한다. 모델은 HuggingFace에서 SHA-256으로 검증해 받는다.

설계의 영리함은 "무거운 일은 전부 애플의 온디바이스 프레임워크에 맡기고, 클라우드는 생성에만 쓴다"는 배치다. 전사·검색은 기기 안에서(프라이버시 ↑), 영상 합성은 AVFoundation이(직접 렌더러 안 만듦), 오직 "실제 생성형 AI 연산"만 Convex 백엔드로 보낸다. 그래서 앱 본체가 가볍다.

4아키텍처 심화 분석

먼저 전체 그림 한 장 → 그다음 "에이전트 명령 한 줄이 편집이 되기까지"와 "타임라인이 화면이 되기까지"를 따라간다.

Palmier Pro의 중심에는 하나의 타임라인 데이터(Timeline)가 있고, 그것을 세 종류의 입력이 만진다 — (1) 사람의 마우스, (2) 외부 에이전트(MCP), (3) 인앱 챗. 만져진 타임라인은 AVFoundation 영상 엔진이 미리보기·내보내기로 바꾼다. 숲을 먼저 보자.

┌──────────────┐ ┌──────────────────┐ ┌──────────────┐ │ 사람(마우스) │ │ 외부 에이전트 │ │ 인앱 챗 │ │ Timeline UI │ │ Claude·Cursor │ │ (BYOK/구독) │ └──────┬───────┘ └────────┬─────────┘ └──────┬───────┘ │ │ MCP(HTTP) │ 같은 도구·프롬프트 │ ┌───────▼──────────┐ │ │ │ MCP 서버 │ │ │ │ 127.0.0.1:19789 │◄────────┘ │ │ (loopback 전용) │ │ └───────┬──────────┘ │ │ ToolExecutor (32개 도구) ▼ ▼ ┌─────────────────────────────────────────────┐ │ EditorViewModel ──► Timeline (값 타입) │ ★ 단일 진실원 │ tracks[] · clips[] · keyframes · transform │ └───────────────┬──────────────────┬───────────┘ │ ① 편집 │ ② 생성 요청 ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ │ 영상 엔진(Preview)│ │ Convex 백엔드 │ │ AVMutableComp. │ │ (생성=클로즈드) │ │ → AVPlayer 미리 │ │ Seedance·Kling… │ │ → AVAssetExport │ │ 작업 구독→결과 URL │ └──────────────────┘ └──────────────────┘

핵심은 가운데의 Timeline이 모두가 공유하는 단 하나의 진실이라는 점이다. 누가 만지든(사람·MCP·챗) 결국 같은 데이터를 바꾸고, 영상 엔진은 그 데이터만 보고 화면을 만든다. 이제 두 줄기를 손으로 따라가자.

흐름 ① — "에이전트의 한마디가 편집이 되기까지" (MCP)

# 앱을 켜면 MCP 서버가 자동으로 뜬다 (AppDelegate가 startMCPService 호출)
1. 연결      claude mcp add --transport http palmier-pro \
              http://127.0.0.1:19789/mcp
2. 파악      에이전트가 먼저 get_timeline / get_media / list_models 호출
              → 현재 트랙·클립·쓸 수 있는 AI 모델을 파악
3. 편집 명령 "마지막 컷 뒤에 3초 전환 영상 만들어 넣어줘"
              → 에이전트가 generate_video → add_clips 도구를 순서대로 호출
4. 실행      ToolExecutor가 각 도구를 Timeline 변경으로 번역(되돌리기 1묶음)
5. 검증      inspect_timeline 으로 합성된 프레임을 렌더해 "정말 들어갔나" 확인

여기서 배울 점이 셋이다. (가) 서버는 loopback(127.0.0.1) IPv4에만 묶인다 — 같은 컴퓨터 안에서만 닿고 외부 네트워크에선 절대 안 보인다(의도된 보안 결정). (나) HTTP 서버를 NIO 같은 큰 라이브러리가 아니라 애플 기본 Network.framework(NWListener/NWConnection)로 직접 짰다 — 연결마다 별도 Server를 붙이는 actor 구조다. (다) 같은 32개 도구를 MCP 서버와 인앱 챗이 공유한다 — 차이는 UX와 과금뿐.

용어
loopback (127.0.0.1) · 왜 안전한가
127.0.0.1은 "내 컴퓨터 자신"을 가리키는 주소다. 여기에만 서버를 묶으면 같은 기기의 프로그램(내 Claude Code)만 접속할 수 있고, 같은 와이파이의 옆 사람조차 닿지 못한다. 그래서 인증 없이도 로컬 도구를 안전하게 열 수 있다.

MCP가 노출하는 32개 도구(일부)

분류대표 도구하는 일
읽기·검사get_timeline · inspect_timeline · search_media현재 타임라인/미디어 파악, 합성 프레임 렌더, 의미 기반 소재 검색.
타임라인 편집add_clips · split_clip · move_clips · set_keyframes클립 배치·분할·이동, 키프레임(애니메이션) 설정.
리플·삭제ripple_delete_ranges · undo구간 잘라내고 빈틈 메우기(필러·정적 제거), 에이전트 편집만 되돌리기.
자막·텍스트add_texts · add_captions자막/타이틀 오버레이, 온디바이스 전사 기반 자동 캡션.
생성형 AIgenerate_video · generate_image · generate_audio텍스트/이미지→영상, 이미지 생성, TTS·음악 생성("돈이 드는·되돌릴 수 없는" 작업).
미디어 관리import_media · list_folders · rename_media외부 소재 임포트(다른 MCP 서버와의 다리), 라이브러리 정리.

흐름 ② — "타임라인이 화면이 되기까지" (영상 엔진)

# Preview/CompositionBuilder.swift — 합성의 핵심(846줄)
1. 트랙→합성  타임라인의 각 트랙을 AVMutableComposition 트랙으로 변환
              클립의 trim 구간만 잘라 삽입 (배속은 scaleTimeRange로 별도 트랙)
2. 레이어     클립마다 위치·불투명도·크롭을
              AVVideoCompositionLayerInstruction 으로 지정
3. 배경      맨 아래에 불투명 검정 트랙 → 빈 영역이 투명 대신 검정으로
4. 텍스트     미리보기는 CATextLayer 오버레이,
              내보내기는 AVVideoCompositionCoreAnimationTool 로 굽기
5. 재생      AVPlayer가 결과를 재생 — 프레임 단위 정확 탐색
              (스크럽 중엔 활성 레이어 수에 맞춰 tolerance를 키워 ~30Hz로)

가장 인상적인 설계는 "커스텀 Metal 렌더러를 안 만들었다"는 것이다. 보통 영상 편집기는 GPU 렌더 파이프라인을 직접 짜는데, Palmier Pro는 AVFoundation의 합성 기능(layer instruction)에 거의 다 맡긴다. Metal/CoreImage는 알파 영상 정규화·이미지→영상 변환·로티 굽기 같은 좁은 보조 작업 4곳에서만 쓴다. 덕분에 코드가 단순하고, 애플이 하드웨어 가속을 알아서 해준다.

비유

커스텀 렌더러 = 주방을 통째로 직접 설계·시공 — 강력하지만 배관·전기까지 다 책임진다.
AVFoundation 합성 = 시스템 키친(빌트인)을 조립 — "여기에 이 클립을, 이 위치·투명도로"라는 지시서(layer instruction)만 써주면 애플이 가스·후드까지 알아서 돌린다.

설계 패턴 — 이 레포에서 "정상"이 뭔지

코드를 처음 열면 낯선 관례가 몇 개 보인다. 미리 알면 길을 덜 잃는다. (가) 거대한 뷰모델 EditorViewModel 하나를 기능별 확장 파일 약 28개로 쪼갰다(+ClipMutations·+Keyframes·+Tracks…). 한 클래스, 여러 파일. (나) Timeline 자체는 관찰 대상이 아니라 순수 값 타입(Codable 구조체)이고, 바뀔 때마다 리비전 카운터를 올려 재렌더를 부른다. (다) 에이전트 백엔드는 AgentClient 프로토콜 뒤에 두 구현이 있다 — 내 키로 직접 Anthropic을 부르는 BYOK 경로와, Clerk 토큰으로 Convex를 거치는 구독 경로.

초보자 함정
"EditorViewModel이 비어 보이는데?"

본체 파일만 열면 메서드가 거의 없어 당황한다. 실제 로직은 Editor/ViewModel/ 폴더의 EditorViewModel+OOO.swift 확장 파일들에 흩어져 있다. "기능 하나 = 확장 파일 하나"가 이 레포의 규칙이다. 클립 편집을 찾으려면 +ClipMutations, 키프레임은 +Keyframes를 열어야 한다.

5디렉토리 구조 해부

폴더 이름이 곧 책임이다. "AI 두뇌(Agent)"와 "영상 엔진(Preview)"이 양대 축.

모든 소스는 Sources/PalmierPro/ 아래 기능별 폴더로 나뉜다. 처음 본다면 Agent/(에이전트 두뇌)Preview/(영상 엔진) 두 폴더만 잡아도 절반은 이해한 것이다.

palmier-pro/ ├── Package.swift ★ SPM 매니페스트 (Swift 6.2, macOS 26, 의존성 9개) ├── AGENTS.md 에이전트/기여자용 아키텍처 메모 ├── appcast.xml Sparkle 자동 업데이트 피드(EdDSA 서명 DMG) ├── mcpb/ Claude Desktop 원클릭 설치용 확장 번들(.mcpb) ├── scripts/ bundle.sh(.app 조립) · release.sh · dev.sh ├── Sources/PalmierPro/ │ ├── App/ ★ 진입점 main.swift · AppDelegate · AppState · 메뉴 │ ├── Agent/ ★★ AI 두뇌 │ │ ├── MCP/ MCPHTTPServer(Network.framework) · MCPService │ │ ├── Tools/ ToolDefinitions(32도구) · ToolExecutor+OOO · 프롬프트 │ │ ├── Clients/ AnthropicClient(BYOK) · PalmierClient(구독) │ │ └── Panel/ 인앱 챗 UI · @멘션 컨텍스트 │ ├── Preview/ ★★ 영상 엔진 │ │ ├── VideoEngine.swift AVPlayer 래퍼 · 프레임 정확 탐색 │ │ ├── CompositionBuilder.swift 합성 핵심(846줄) │ │ └── TextLayerController… 자막 오버레이 · 로티/이미지 영상화 │ ├── Editor/ EditorViewModel(확장 ~28개) · RippleEngine · OverwriteEngine │ ├── Timeline/ 타임라인 UI(TimelineView 1036줄) · SnapEngine · 클립 렌더 │ ├── Models/ ★ Timeline · Keyframe · MediaAsset (값 타입 데이터 모델) │ ├── Generation/ 생성형 AI: 모델 카탈로그 · 제출 · GenerationBackend │ ├── Search/ 온디바이스 시각 검색(SigLIP2 CoreML) │ ├── Transcription/ Apple Speech 전사 + 캐시 + 검색 │ ├── MediaPanel/ 미디어 라이브러리 UI(그리드·드래그·캡션 탭) │ ├── Inspector/ 우측 속성 패널(InspectorView 1112줄) · 키프레임 레인 │ ├── Project/ 홈 화면 · VideoProject(NSDocument=.palmier 파일) │ ├── Account/ Clerk 인증 · 크레딧 · 백엔드 설정 │ ├── Export/ ExportService · XMLExporter(FCPXML) · .palmier 번들 │ └── Resources/ Info.plist · 폰트 · 아이콘 · 동봉 .mcpb └── Tests/PalmierProTests/ Swift Testing 60파일(타임라인·검색·내보내기·에이전트)
위치한 줄 역할
App/main.swift진입점. @main 대신 NSApplication을 손수 띄우고 MCP 서버를 시작.
Agent/MCP/loopback HTTP+MCP 서버. Network.framework로 직접 구현, 연결마다 별도 Server.
Agent/Tools/32개 도구 정의 + 실행기 + 시스템 프롬프트. MCP·인앱 챗 공유.
Preview/CompositionBuilder.swift합성 심장. 타임라인→AVMutableComposition + 레이어 지시.
Models/Timeline.swift데이터 모델(540줄). 프레임 기반 트랙·클립·키프레임 값 타입.
Editor/RippleEngine.swift리플 편집(뒤 클립 밀기) 엔진. 전용 단위 테스트 다수.
Generation/GenerationBackend.swiftConvex로 생성 작업 제출 → 구독으로 진행률·결과 URL 수신.
Search/ · Transcription/온디바이스 ML 두 축 — 시각 검색(SigLIP)과 음성 전사(Speech).

6학습 포인트 (기술별)

이 레포 하나로 "Swift MCP 서버 + AVFoundation 합성 + 타임라인 모델링 + 모던 동시성 + 온디바이스 ML"을 한꺼번에.

Palmier Pro는 단일 기술 예제가 아니라 현대 macOS AI 앱의 부품이 다 모인 교과서다. 분야별로 무엇을 건질지 짚는다.

① Swift로 MCP 서버 만들기

"내 앱을 에이전트가 조작하게" 여는 실전

공식 modelcontextprotocol/swift-sdk로 도구(Tool)와 리소스를 정의하고, HTTP 서버를 애플 Network.framework로 직접 짜는 전 과정을 본다. loopback 전용 바인딩·연결별 서버·OAuth 리소스 발견 엔드포인트까지, "앱을 MCP로 노출하는 법"의 압축판이다.

실습: Agent/MCP/MCPHTTPServer.swift에서 왜 127.0.0.1에만 묶는지, GET /mcp(SSE 킵얼라이브)와 POST /mcp(요청 처리)를 어떻게 가르는지 따라가기.

② AVFoundation 영상 합성

커스텀 렌더러 없이 멀티트랙 편집기를 만드는 법

AVMutableComposition에 트랙·클립을 삽입하고, AVVideoCompositionLayerInstruction으로 위치·불투명도·크롭을 주고, 배속은 scaleTimeRange로, 텍스트는 미리보기(CATextLayer)와 내보내기(CoreAnimationTool)에서 다르게 굽는다. 영상 편집기의 합성 파이프라인을 가장 적은 코드로 배우는 예제.

실습: Preview/CompositionBuilder.swift에서 맨 아래 "불투명 검정 배경 트랙"을 왜 까는지(빈 영역이 투명이 되지 않게) 확인.

③ 프레임 기반 타임라인 데이터 모델

"초"가 아니라 "프레임"으로 생각하기

Models/Timeline.swift는 전부 Codable/Sendable 값 타입이다. 클립은 반열린 구간 [startFrame, startFrame+durationFrames)를 차지하고, 트림·배속을 거쳐 소스↔타임라인 좌표를 변환한다. 키프레임은 클립 기준 상대 위치라 클립이 움직이면 같이 따라온다. 영상·애니메이션 데이터 모델링의 정석.

실습: 클립 길이를 줄이면 키프레임이 어떻게 재조정되는지, 트림과 배속이 소스 프레임 계산에 어떻게 곱해지는지 추적.

④ Swift 6.2 모던 동시성 (@Observable · @MainActor)

ObservableObject·TCA 없이 상태를 관리하는 최신 방식

애플의 새 Observation(@Observable)과 @MainActor를 전면 사용한다(72개 파일). strict concurrency(엄격 동시성) 아래에서 Sendable·actor·nonisolated를 실전에서 어떻게 쓰는지, 거대한 뷰모델을 기능별 확장 28개로 쪼개는 조직법까지 본다.

실습: EditorViewModel 본체와 확장 파일들을 비교해, "왜 하나의 클래스를 여러 파일로 나눴나"의 장단점을 정리.

⑤ 온디바이스 ML + 에이전트 루프

전사·검색은 기기 안에서, 도구 호출은 루프로

애플의 새 SpeechAnalyzer(macOS 26)로 자막을 만들고, SigLIP2 CoreML로 "장면 의미 검색"을 인터넷 없이 한다. 그리고 Agent/AgentService.swift고전적 도구 사용 루프(스트리밍 → tool_use 만나면 실행 → tool_result 붙여 다시 호출 → end_turn까지)를 읽으면 에이전트가 실제로 어떻게 도는지가 손에 잡힌다.

실습: AgentService.runLoop()에서 중단·고아 tool_use 처리·스트리밍 델타가 어떻게 다뤄지는지 따라가기.

7하드웨어/시스템 요구사항

"애플 실리콘 맥 + macOS 26"이 절대 조건. 편집은 무료, 생성만 키/구독.

Palmier Pro는 최신 애플 환경에 단단히 묶여 있다. macOS 26(Tahoe)의 새 API(SpeechAnalyzer 등)와 Metal을 쓰기 때문에, 구형 맥이나 인텔 맥에서는 돌지 않는다.

항목요구사항
운영체제macOS 26 (Tahoe) 전용. 그 이하 버전 불가(Sparkle minimumSystemVersion=26.0).
CPU/칩애플 실리콘(arm64)만. 인텔 맥 미지원.
설치(사용자)로그인 없이 PalmierPro.dmg 받아 실행. 비샌드박스 Developer ID 서명 앱.
영상 편집(무료)추가 비용·계정 없음. CapCut·프리미어처럼 그냥 씀.
에이전트 편집(무료)MCP 서버 무료. 내 ANTHROPIC_API_KEY(BYOK)를 Keychain에 넣으면 인앱 챗도 사용.
생성형 AI(유료)영상·이미지·음악 생성은 크레딧 차감(구독 또는 BYOK). "돈이 드는·되돌릴 수 없는" 작업으로 명시.
빌드(개발자)Xcode/Swift 6.2 툴체인. swift build / swift run, 테스트는 swift test. .app 조립은 scripts/bundle.sh.

학습 목적이라면 가장 가벼운 출발점은 "소스를 클론해 swift build로 빌드해보기"다(애플 실리콘 맥 + macOS 26 필요). 생성형 AI까지 체험하려면 Anthropic API 키를 꽂으면 되고, 모델 카탈로그·과금은 Convex 백엔드에서 내려오므로 키만으로 도구 호출 흐름을 따라갈 수 있다.

8직접 해볼 수 있는 실습 과제

"MCP 연결"은 10분, "소스 빌드·코드 읽기"는 한나절, "도구 추가"는 주말 프로젝트. 난이도 순.

실습 1 난이도 ★☆☆ 입문

앱 켜고 Claude Code에 MCP 서버 연결하기

DMG를 받아 앱을 켠 뒤, 터미널에서 claude mcp add --transport http palmier-pro http://127.0.0.1:19789/mcp를 실행한다. Claude Code에서 도구 목록에 palmier-pro의 32개 도구가 뜨는지 확인한다.

목표: "앱이 곧 MCP 서버"라는 개념을 체감. 에이전트가 어떤 도구를 받았는지 눈으로 확인.
실습 2 난이도 ★☆☆ 입문

에이전트에게 타임라인을 편집시켜 보기

Claude에게 "지금 타임라인 상태 알려줘"(→ get_timeline), "이 클립을 절반 지점에서 잘라"(→ split_clip), "필러·정적 구간 제거해"(→ ripple_delete_ranges)를 시켜본다. 도구 호출이 실제 화면 변경으로 이어지는 걸 관찰한다.

목표: 사람이 아니라 에이전트가 같은 타임라인을 만지는 경험. undo가 "에이전트 편집만" 되돌린다는 점도 확인.
실습 3 난이도 ★★☆ 중급

소스 클론해서 빌드하고 MCP 서버 코드 읽기

git cloneswift build로 빌드하고(애플 실리콘+macOS 26), Agent/MCP/MCPHTTPServer.swift를 정독한다. "어디서 포트 19789에 바인딩하는지", "왜 IPv4 loopback만 허용하는지" 주석을 찾아 표시한다.

목표: Network.framework로 HTTP 서버를 직접 짜는 패턴 습득. MCP 트랜스포트가 연결마다 분리되는 이유 이해.
실습 4 난이도 ★★☆ 중급

AVFoundation 미니 합성 예제 만들기

Palmier Pro를 참고해, 별도 작은 프로젝트에서 영상 2개를 AVMutableComposition으로 이어 붙이고 AVVideoCompositionLayerInstruction으로 한쪽을 반투명하게 겹친 뒤 AVAssetExportSession으로 내보낸다.

목표: "커스텀 렌더러 없이" 멀티트랙 합성이 되는 원리를 손으로 재현. 레이어 지시서의 transform·opacity 감 잡기.
실습 5 난이도 ★★★ 고급

MCP 도구 하나 새로 추가하기

Agent/Tools/ToolDefinitions.swift에 도구를 1개 정의하고(예: "모든 클립 볼륨을 X로"), ToolExecutor+OOO.swift에 실행 로직을 붙여 Timeline 변경으로 번역한다. 빌드 후 Claude가 그 도구를 호출하는지 확인한다.

목표: "도구 정의 → 실행기 → 타임라인 변경"의 전체 고리를 직접 연결. 에이전트가 쓰는 도구를 내가 만드는 경험.

9관련 기술 심화 학습 로드맵

Palmier Pro를 100% 소화하는 8주 코스(주당 6~8시간 가정). Swift 기초가 있다는 전제.

주차주제학습 자료 / 할 일
1주차Swift 6.2 · 모던 동시성@Observable·@MainActor·Sendable·actor 개념. strict concurrency 감 잡기.
2주차SwiftUI + AppKit 하이브리드NSApplication 수동 부팅·NSDocument. App/·Project/ 정독.
3주차AVFoundation 기초AVPlayer·AVMutableComposition·CMTime. 실습 4 전반.
4주차합성·내보내기 심화CompositionBuilder.swift 정독. layer instruction·CoreAnimationTool.
5주차타임라인 데이터 모델Models/Timeline.swift·Keyframe. 프레임 좌표·트림·배속 계산.
6주차MCP 프로토콜 · Swift SDKMCP 개념·modelcontextprotocol/swift-sdk. Agent/MCP/ 정독. 실습 1~3.
7주차에이전트 루프 · 도구 설계AgentService.swift·ToolDefinitions.swift. 실습 5.
8주차온디바이스 ML · 백엔드Apple Speech 전사 · SigLIP CoreML 검색 · Convex/Clerk 연동 읽기.

10핵심 키워드 사전

이 문서와 레포에 등장한 용어를 한자리에.

용어의미
Palmier ProSwift로 만든 macOS 네이티브 AI 영상 편집기. 타임라인 내장 생성 + MCP 서버.
MCPModel Context Protocol. 에이전트가 외부 도구에 접근하는 표준 규약("AI의 USB-C").
MCP 서버 / 클라이언트도구를 제공하는 쪽(앱) / 도구를 쓰는 쪽(Claude·Cursor·Codex).
AVFoundation애플의 영상·오디오 표준 프레임워크. 재생·합성·내보내기 담당.
AVMutableComposition여러 클립·트랙을 하나의 가상 타임라인으로 합치는 AVFoundation 객체.
LayerInstruction합성 시 클립의 위치·불투명도·크롭을 지정하는 "지시서"(AVVideoCompositionLayerInstruction).
AVAssetExportSession합성 결과를 H.264/H.265/ProRes 파일로 내보내는 AVFoundation 객체.
Metal / CoreImage애플 GPU 그래픽 · 이미지 처리. 여기선 알파 정규화·로티 굽기 등 좁게 사용.
@Observable / @MainActor애플의 최신 상태 관찰 / 메인 스레드 격리 표시. 모던 SwiftUI 상태 관리.
strict concurrencySwift의 엄격한 동시성 검사. 데이터 경쟁을 컴파일 단계에서 막음(Sendable 등).
키프레임(keyframe)시간에 따라 속성(위치·불투명도 등)이 변하는 애니메이션 지점. 클립 기준 상대 위치.
리플 편집(ripple)한 구간을 지우면 뒤 클립들이 빈틈을 메우며 당겨지는 편집. ripple_delete_ranges.
loopback / 127.0.0.1"내 컴퓨터 자신" 주소. 여기에만 서버를 묶으면 같은 기기에서만 접속 가능(보안).
Network.framework애플의 저수준 네트워킹(NWListener/NWConnection). MCP HTTP 서버를 직접 구현.
BYOKBring Your Own Key. 내 Anthropic API 키를 직접 꽂아 쓰는 방식(Keychain 저장).
Convex실시간 반응형 백엔드. 생성 작업 상태를 구독으로 밀어줌(폴링 불필요).
Clerk로그인·세션(JWT) 인증 SDK. 생성형 AI 과금·계정의 기반.
SigLIP 2이미지·글을 같은 벡터 공간에 두는 비전 모델. 온디바이스 의미 검색에 사용.
CoreML애플 온디바이스 ML 추론 엔진(Neural Engine 활용). SigLIP을 기기에서 실행.
SpeechAnalyzermacOS 26의 새 음성 전사 API. 자막·캡션을 인터넷 없이 생성.
SparklemacOS 자동 업데이트 프레임워크. appcast.xml의 서명된 DMG를 읽어 갱신.
SPMSwift Package Manager. 의존성·빌드 관리(Package.swift).
Swift TestingXCTest를 잇는 새 테스트 프레임워크(@Test·#expect). 이 레포 전면 채택.
.mcpbClaude Desktop 확장 번들. 앱에 동봉돼 원클릭으로 MCP 설치.

11참고 링크

원문·SDK·관련 기술 더 파기.