ItsWendell/palot
요약
Palot은 터미널 기반 AI 코딩 에이전트인 OpenCode를 위한 오픈 소스 Electron 데스크톱 인터페이스입니다. 단일 창에서 여러 프로젝트를 관리하고, 시각적인 diff 패널, 실시간 스트리밍, 도구 호출 시각화 등 풍부한 UI 기능을 통해 에이전트 사용 경험을 개선합니다.
핵심 포인트
- OpenCode의 터미널 제약을 넘어선 멀티 프로젝트 워크스페이스 지원
- 파일 변경 사항을 즉시 검토할 수 있는 인라인 diff 및 구문 강조 기능
- Anthropic, OpenAI, Google 등 다양한 모델 및 에이전트 선택 기능
- 에이전트의 작업에 대한 세밀한 권한 관리 및 대화형 질문 인터페이스
- 실행 취소(Undo/Redo) 및 슬래시 명령어를 통한 효율적인 에이전트 제어
Alpha Software-- Palot은 현재 활발히 개발 중입니다. Breaking changes (파괴적 변경 사항), 누락된 기능, 그리고 미흡한 부분이 있을 수 있습니다. 피드백과 기여를 환영합니다!
Palot은 OpenCode에 완전한 데스크톱 인터페이스를 제공하는 오픈 소스 Electron 앱입니다. OpenCode는 강력한 터미널 기반 AI 코딩 에이전트(AI coding agent)이지만, 한 번에 하나의 프로젝트만 실행할 수 있으며 터미널 내에서만 작동합니다. Palot은 이를 시각적인 UI로 감싸서 단일 창에서 여러 프로젝트와 세션을 관리하고, 전용 diff 패널에서 파일 변경 사항을 검토하며, 자동화된 에이전트 실행을 예약하고, 다른 코딩 에이전트로부터 기존 설정을 마이그레이션할 수 있도록 해줍니다.
Palot은 OpenCode 서버를 자동으로 생성 및 관리하며, 응답을 실시간으로 스트리밍하고, 구문 강조(syntax-highlighted)가 적용된 diff, 파일 미리보기 및 터미널 출력을 통해 도구 호출(tool calls)을 렌더링합니다.
멀티 프로젝트 워크스페이스 (Multi-project workspace)-- 단일 창에서 모든 프로젝트의 AI 세션을 관리하세요. OpenCode는 인스턴스당 하나의 프로젝트로 범위가 제한되지만, Palot은 그 제한을 해제합니다. -
전체 채팅 인터페이스 (Full chat interface)-- 실시간 SSE 스트리밍, Markdown 렌더링, 자동 스크롤, 지연 로딩 페이지네이션(lazy-load pagination), 그리고 세션 전환 시 초안 유지(draft persistence) 기능을 갖춘 대화형 UI를 제공합니다. -
실행 취소 / 다시 실행 (Undo / redo)-- Cmd+Z를 눌러 에이전트의 마지막 턴(파일 변경 사항 포함)을 되돌릴 수 있으며, Shift+Cmd+Z로 다시 실행할 수 있습니다. -
슬래시 명령어 (Slash commands)-- 채팅 입력창에서 /를 입력하여 /compact 및 /help와 같은 서버 측 명령어를 직접 호출할 수 있습니다. -
파일 및 컨텍스트 언급 (File and context mentions)-- @를 사용하여 파일이나 특정 컨텍스트를 참조함으로써 에이전트에게 정확한 범위를 지정할 수 있습니다. -
풍부한 도구 호출 시각화 (Rich tool call visualization)-- 모든 도구 호출은 인라인으로 렌더링됩니다:-
-
행 번호와 구문 강조가 포함된 파일 읽기
-
인라인 diff(이전 vs 이후)로 표시되는 편집 사항
-
ANSI 색상이 적용된 터미널 출력이 포함된 Bash 명령어
-
일치하는 패턴이 포함된 검색 결과 (glob, grep)
-
URL 및 콘텐츠 미리보기가 포함된 웹 페치 (Web fetches)
-
실시간 진행 상황 추적이 가능한 작업 목록
-
서브 에이전트 카드 (Sub-agent cards)-- 위임된 작업에 대한 실시간 활동 카드이며, 접을 수 있는 하위 세션 뷰와 완료 시 자동 접기 기능을 제공합니다.
-
모델 및 에이전트 선택기 (Model and agent selector)-- 모든 연결된 제공업체 (Anthropic, OpenAI, Google 등)를 대상으로 검색 가능한 모델 선택기를 제공하며, 추론 변형 (reasoning variant) 지원, "최근 사용 항목" 섹션 및 즐겨찾기 기능을 포함합니다. 사용 가능한 에이전트 간 전환이 가능합니다.
-
권한 관리 (Permission management)-- 에이전트의 권한 요청에 대해 "한 번 허용" 및 "항상 허용" 옵션을 제공하는 인라인 승인/거부 UI를 제공합니다.
-
대화형 질문 (Interactive questions)-- 에이전트의 질문에 대해 라디오 버튼, 체크박스 및 자유 텍스트 입력을 지원하며, 키보드 단축키를 사용할 수 있습니다.
-
파일 첨부 (File attachments)-- 이미지 (PNG, JPEG, GIF, WebP) 및 PDF를 채팅창으로 드래그 앤 드롭할 수 있으며, 모델의 역량에 따른 경고를 표시합니다.
-
세션 압축 (Session compaction)-- 컨텍스트 윈도우 (context window) 토큰을 확보하기 위해 긴 대화를 수동 또는 자동으로 요약합니다.
-
리뷰 패널 (Review panel)-- 현재 세션의 모든 파일 변경 사항을 보여주는 전용 접이식 사이드 패널입니다. 가상화 렌더링 (virtualized rendering)과 오프스레드 (off-thread) 구문 강조를 위한 워커 풀 (worker pool)을 사용하여, 수백 개의 변경된 파일이 있더라도 빠른 속도를 유지합니다.
-
디프 코멘팅 (Diff commenting)-- 디프 뷰어 (diff viewer)의 임의의 줄을 클릭하여 댓글을 남길 수 있습니다. 댓글은 자동으로 수집되어 채팅 입력창에 삽입되므로, 에이전트에게 피드백을 한 번에 보낼 수 있습니다.
-
커밋 및 푸시 (Commit and push)-- Palot을 벗어나지 않고도 브랜치를 생성하고, 변경 사항을 커밋하고, 원격 저장소에 푸시하며, GitHub Pull Request를 생성할 수 있는 통합 대화 상자를 제공합니다.
-
스마트 디프 게이트 (Smart diff gates)-- 리뷰 패널의 응답성을 유지하기 위해 생성된 파일 (lockfiles 등) 및 매우 큰 디프 (diffs)를 자동으로 접습니다.
-
예약된 에이전트 실행 (Scheduled agent runs)-- RRule 기반 스케줄링을 통해 반복적인 작업을 정의합니다. Palot은 백그라운드에서 에이전트를 실행하고 결과를 검토할 수 있도록 대기열에 추가합니다.
-
휴먼 인 더 루프 리뷰 (Human-in-the-loop review)-- 자동화 실행 결과는
pending_review상태로 들어옵니다.
상태로 유지되어, 승인하거나 아카이브하기 전에 리뷰 패널에서 변경 사항을 검토할 수 있습니다.
자동 아카이브 (Auto-archiving)-- 실행 결과 조치할 변경 사항이 없는 경우, 목록을 깔끔하게 유지하기 위해 자동으로 아카이브됩니다.
지수 백오프를 이용한 재시도 (Retry with backoff)-- 불안정한 작업(flaky tasks)을 위해 지수 백오프 (exponential backoff)를 적용하여 구성 가능한 실행 재시도를 수행합니다.
Claude Code 및 Cursor로부터의 마이그레이션 (Migrate from Claude Code and Cursor)-- 가이드형 위저드(wizard)가 Claude Code 및 Cursor의 기존 설정과 채팅 기록을 감지합니다. 전역/프로젝트 설정, MCP 서버, 커스텀 에이전트(custom agents), 명령(commands), 규칙(예: CLAUDE.md를 AGENTS.md로 변환), 그리고 훅(hooks)을 OpenCode 형식으로 변환합니다.
기록 가져오기 (History import)-- Cursor (state.vscdb) 및 Claude Code의 과거 세션과 대화를 OpenCode로 변환하여, 전환 시 문맥(context)을 잃지 않도록 합니다.
백업 및 복구 (Backup and restore)-- 모든 마이그레이션 전에 자동 백업을 수행하며, 클릭 한 번으로 복구할 수 있는 옵션을 제공합니다.
CLI 설정 도우미 (CLI setup helper)-- OpenCode CLI 환경을 확인, 설치 또는 복구할 수 있는 내장 UI를 제공합니다.
리퀴드 글래스 (Liquid Glass, macOS 26+)-- macOS Tahoe에서 네이티브 NSGlassEffectView 윈도우 크롬(window chrome)을 사용하며, 이전 버전에서는 vibrancy 폴백(fallback)을, 다른 플랫폼에서는 불투명(opaque) 모드를 제공합니다.
시스템 강조 색상 (System accent color)-- UI가 macOS 및 Windows의 OS 강조 색상에 맞춰 조정됩니다.
시스템 트레이 (System tray)-- 트레이 아이콘과 함께 백그라운드에서 실행됩니다 (전용 Linux 변형 포함).
독 / 앱 배지 (Dock / app badges)-- 대기 중인 작업이나 필요한 권한에 대해 앱 아이콘에 배지 카운트를 표시합니다.
안전한 자격 증명 저장 (Secure credential storage)-- Electron의 safeStorage를 사용하여 서버 비밀번호와 API 키를 암호화합니다.
mDNS 서버 검색 (mDNS server discovery)-- 로컬 네트워크를 자동으로 스캔하여 OpenCode 서버를 찾아내며, 이를 통해 원격 또는 헤드리스(headless) 인스턴스에 연결할 수 있습니다.
에디터에서 열기 (Open in editor)-- 현재 프로젝트를 VS Code, Cursor, JetBrains IDE 또는 터미널에서 즉시 실행할 수 있는 퀵 런치(quick-launch) 버튼을 제공합니다.
커맨드 팔레트 (Command palette)-- Cmd+K를 사용하여 세션 검색, 프로젝트 전환, 기능 플래그(feature flags) 토글 및 명령 실행을 수행합니다.
자동 업데이트 (Auto-updates)-- 다운로드 진행 상황과 클릭 한 번으로 재시작할 수 있는 기능이 포함된 내장 업데이트 메커니즘을 제공합니다.
| 플랫폼 | 아키텍처 (Architectures) | 형식 (Formats) |
|---|---|---|
| macOS | Apple Silicon, Intel | DMG, ZIP |
| ... |
Releases 페이지에서 최신 릴리스를 다운로드하세요.
Palot은 아직 코드 서명 (Code-signing) 또는 공증 (Notarization)이 완료되지 않았습니다. macOS Gatekeeper는 첫 실행 시 "Palot이 손상되어 열 수 없습니다" 또는 *"Apple에서 Palot을 확인할 수 없습니다"*와 같은 메시지와 함께 앱을 차단할 것입니다. 이를 해결하려면 다음 방법을 사용하세요:
옵션 A -- Finder에서 앱을 우클릭(또는 Control-클릭)하고 **열기 (Open)**를 선택한 다음, 대화 상자에서 **열기 (Open)**를 클릭합니다.
옵션 B -- 터미널 (Terminal)에서 격리 속성 (Quarantine attribute)을 제거합니다:
xattr -cr /Applications/Palot.app
이는 서명되지 않은 앱에서 발생하는 예상된 동작이며, 멀웨어 (Malware)를 의미하지 않습니다.
- Releases 페이지에서 다운로드 및 설치
- OpenCode CLI가 설치되어 있는지 확인하세요 (
~/.opencode/bin/opencode) - Palot이 OpenCode 서버를 자동으로 관리합니다.
OpenCode에는 최소 하나 이상의 AI 제공업체 (Anthropic, OpenAI, Google 등)가 구성되어 있어야 합니다. 초기 설정을 완료하려면 터미널에서 opencode를 한 번 실행하세요.
첫 실행 시, Palot은 기존 설정 및 기록을 감지하는 가이드형 마이그레이션 마법사 (Migration wizard)를 제공합니다. 이 마법사는 나중에 설정 (Settings) 메뉴에서도 실행할 수 있습니다.
Palot은 OpenCode 상단의 GUI 레이어 (GUI layer)이므로, 모델 제공업체, MCP 서버, 커스텀 도구 및 에이전트 동작 (Agent behavior)과 같은 핵심 설정은 OpenCode 자체의 설정 파일 (Config files)을 통해 관리됩니다. 설정 지침은 OpenCode 문서를 참조하세요.
사전 요구 사항 (Prerequisites): Bun 1.3.8+ 및 OpenCode CLI
git clone https://github.com/ItsWendell/palot.git
cd palot
bun install
...
Electron 없이 프론트엔드 (Frontend) 개발을 진행하려면:
# 터미널 1: 백엔드 (Backend) 시작
cd apps/server && bun run dev # 포트 3100
# 터미널 2: 렌더러 (Renderer) 시작
...
apps/
desktop/ Electron 40 + Vite + React 19 데스크톱 앱
server/ Bun + Hono 백엔드 (브라우저 모드 개발 전용)
...
데스크톱 앱에는 세 가지 런타임 컨텍스트 (Runtime contexts)가 있습니다:
Main process (Node.js) -- 창 관리 (Window management), IPC 핸들러 (IPC handlers), OpenCode 서버 라이프사이클 (OpenCode server lifecycle), 자동화 스케줄러 (automation scheduler)
Preload -- contextBridge를 통해 window.palot API를 노출하는 보안 브릿지 (Secure bridge)
Renderer (Chromium) -- 컴포넌트, 훅 (hooks), 서비스, 그리고 Jotai atoms를 포함하는 React 앱
| 계층 (Layer) | 기술 (Technology) |
|---|---|
| 데스크톱 셸 (Desktop shell) | Electron 40, electron-vite |
| ... |
# Development
bun run dev # Electron 개발 모드 (apps/desktop에서 실행)
bun run dev:web # 브라우저 전용 개발 모드 (apps/desktop에서 실행, apps/server 필요)
...
Palot은 초기 알파 (early alpha) 단계이며 여러분의 기여를 환영합니다! 시작하는 방법은 다음과 같습니다:
- 저장소 포크 (Fork the repository)
- 기능 브랜치 생성 (
git checkout -b feature/my-feature) - 변경 사항 적용
- 품질 검사 실행:
bun run lint && bun run check-types - 변경 세트 (changeset) 추가:
bun changeset - 풀 리퀘스트 (pull request) 오픈
코드 스타일 컨벤션 (code style conventions), 명명 패턴 (naming patterns), 그리고 중요한 아키텍처 참고 사항은 AGENTS.md 파일을 확인해 주세요.
Palot은 오픈 소스 AI 코딩 에이전트인 OpenCode를 기반으로 구축되었습니다. Palot은 @opencode-ai/sdk 패키지를 통해 OpenCode 서버와 통신합니다.
UI 컴포넌트 라이브러리는 shadcn/ui, Base UI, 그리고 Tailwind CSS로 구축되었습니다.
제3자 종속성 (third-party dependencies) 및 라이선스 전체 목록은 THIRD-PARTY-NOTICES.md를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기