<p align="center">
<img src="https://raw.githubusercontent.com/xiaolai/claudepot-app/HEAD/assets/claudepot-icon.png" width="120" alt="Claudepot">
</p>
<h1 align="center">Claudepot</h1>
<p align="center">
<strong>Claude Code 및 Claude Desktop을 위한 제어판입니다.</strong><br>
계정 전환. 실행 중인 작업 모니터링. 프롬프트 예약. 이전 채팅 찾기. 디스크 공간 확보.
</p>
<p align="center">
<a href="#what">What</a> ·
<a href="#why">Why</a> ·
<a href="#how">How</a> ·
<a href="#for-developers">For developers</a>
</p>
What
Claudepot은 Claude Code 및 Claude Desktop 옆에 위치하여 이들이 자체적으로 제공하지 못하는 기능들을 제공하는 데스크톱 앱이자 이에 맞는 커맨드라인 도구입니다:
- 계정 전환(Account switching). 업무용 계정과 개인용 계정을 나란히 유지하고 클릭 한 번으로 전환할 수 있습니다.
- 실시간 보기(Live view). 현재 실행 중인 모든 Claude 세션, 심지어 어떤 세션이 사용자를 기다리고 있는지까지 볼 수 있습니다.
- 자동 순환(Auto-rotation). 활성 CLI 계정이 설정한 사용 한계치(5h, 7d, 7d-Opus, 7d-Sonnet)에 도달하면, Claudepot은 선택된 대체 계정으로 전환할 수 있습니다. 기본적으로는 확인 모드(confirm-mode)이며, 규칙을 신뢰하게 되면 자동 모드(auto-mode)로 설정 가능합니다.
- 예약 프롬프트(Scheduled prompts). 매일 아침, 평일마다 또는 원하는 크론 스케줄에 따라 Claude가 프롬프트를 실행하도록 할 수 있습니다.
- 검색 가능한 기록(Searchable history). 지난주 채팅을 찾고 다시 열거나 내보낼 수 있습니다.
- 안전한 프로젝트 이름 변경(Safe project rename). 프로젝트 폴더를
mv 명령어로 이동하면 Claude의 세션 기록이 깨집니다. Claudepot은 그렇지 않습니다.
- 디스크 정리(Disk cleanup).
~/.claude/ 디렉토리는 조용히 수 기가바이트까지 커집니다. 클릭 한 번으로 대부분을 회수할 수 있으며, 7일간의 되돌리기 기능이 있습니다.
- 내보내기 시 개인 정보 보호(Privacy on export). 토큰(Tokens), 인증 헤더(auth headers), 쿠키는 어떤 세션이 사용자의 장치를 떠나기 전에 제거됩니다.
- 비 GUI 사용자용 사용량 스냅샷(Usage snapshot for non-GUI consumers). 5분마다 새로 고침되는
~/.claudepot/usage-snapshot.json (모드 0600) 파일은 cron 작업이나 Claude Code Bash 서브 프로세스가 키체인(keychain)을 거치지 않고 가장 부하가 적은 계정을 선택할 수 있게 합니다.
현재는 macOS를 우선으로 개발되었습니다. Windows와 Linux 버전도 깔끔하게 빌드되고 작동하지만, 완성도는 낮습니다.
Why
클로드 코드(Claude Code)나 클로드 데스크톱(Claude Desktop)을 매일 사용한다면, 이 목록 중 적어도 하나를 겪어보셨을 것입니다. 이 문제들은 임시방편이 아니라 Claudepot에서 완벽하게 해결되는 기능들입니다.
| 고통점 (Pain) | 실제 원인 (What's actually going on) |
|---|
| 이미 한 계정에 로그인되어 있을 때 /login이 계정을 전환하지 않음 | 클로드는 단일 키체인 슬롯에서 읽습니다. '다른 계정'이라는 개념 자체가 없습니다. |
| ... | |
사용 방법 (How)
설치 (Install)
상태: 베타 (0.7.0). macOS용으로 매일 업데이트됩니다. Windows 및 Linux 빌드는 준비되었으나 경험이 적습니다.
최신 버전의 Rust toolchain(rustup.rs)과 pnpm(pnpm.io)이 포함된 Node 20 이상이 필요합니다. 다른 시스템 종속성은 없습니다.
git clone https://github.com/xiaolai/claudepot-app.git
cd claudepot-app
...
미리 빌드된 설치 프로그램은 곧 출시될 예정입니다. 그때까지는 소스 코드 빌드만 가능합니다.
사용자의 데이터는 ~/.claudepot/에 저장됩니다 (환경 변수 CLAUDEPOT_DATA_DIR로 덮어쓸 수 있습니다).
첫 실행 (First run)
앱을 엽니다. 왼쪽 사이드바는 제품 전체의 지도이며, 9개의 탭 각각이 하나의 기능입니다. 먼저 계정(Accounts) 섹션에서 계정을 추가합니다. 세 가지 방법이 있습니다:
- 브라우저 OAuth — 일회성 브라우저 로그인으로, 사용자가 토큰을 처리할 필요가 없습니다.
- 현재 Claude Code에 로그인된 계정을 가져오기(Import).
- 이미 가지고 있는 경우 새로고침 토큰(refresh token) 붙여넣기.
그 후에는 사이드바, ⌘K 명령어 팔레트 또는 메뉴 바 트레이 아이콘을 통해 한 번의 클릭으로 전환할 수 있습니다. 두 개의 슬롯이 독립적으로 전환됩니다: 하나는 Claude Code CLI용이고, 다른 하나는 Claude Desktop용입니다. 동시에 CLI에서는 업무 계정을, 데스크톱에서는 개인 계정을 사용할 수 있습니다.
기능들 (Features), 사이드바 탭별로 하나씩
계정 (Accounts) — 사용자가 가진 모든 Claude 계정을 관리합니다. 추가, 제거, 인증 및 간 전환이 가능합니다. 두 개의 슬롯(CLI용 하나, 데스크톱 앱용 하나)은 독립적으로 전환됩니다. 각 계정별 비밀 정보는 OS 키체인에 저장됩니다.
Accounts tab
활동 (Activities) — "현재 Claude에서 무슨 일이 일어나고 있는지"에 대한 세 가지 시간 척도를 제공합니다: 실시간 스트립(주의가 가장 필요한 순서로 정렬된 실행 세션), 오늘/월별 대시보드, 그리고 최근 이벤트 스트림입니다. 세션이 busy 상태에서 waiting 상태로 전환될 때 macOS 알림을 받습니다.
Activities tab
프로젝트 (Projects) — Claude가 접했던 모든 프로젝트와 그 세션들이 모여 있습니다. 프로젝트 간 텍스트 검색, 날짜/오류/크기/토큰 수별 필터링이 가능합니다. mv 명령으로 이동시키는 대신 여기서 프로젝트 이름을 변경할 수 있습니다. Claudepot은 Claude가 가지고 있는 모든 참조(세션 기록, 프로젝트 맵, 히스토리 파일, 메모리, 설정)를 아홉 단계의 저널링된 과정으로 재작성합니다. 충돌 시에도 재개 가능하며, 완전히 되돌릴 수 있습니다 (fully reversible).
Projects tab
지식 (Knowledge) — Claude가 무엇을 알고 있는지에 대한 프로젝트 중심의 보기: 상태 대시보드, 큐레이션된 지식 기반(Know base) (메모리, 결정, 증거), 인간이 승인하는 검토 대기열(Review queue), 그리고 인덱싱된 Claude Code + Codex 기록에 대한 검색(Recall) 기능입니다. 동일한 데이터는 claudepot mcp memory-server를 통해 에이전트에게 노출되며, 로컬 저장소(localStorage) 호환성을 위해 레지스트리 ID는 shared-memory로 유지됩니다.
Knowledge tab
키 (Keys) — 모든 API 키 및 OAuth 토큰을 한곳에 보관합니다. OS 키체인(macOS Keychain / Windows Credential Manager / Linux Secret Service)에 저장됩니다. 자체 삭제되는 클립보드로 복사할 수 있으며, 값은 30초 후에 자동으로 지워집니다.
Keys tab
제공자 (Providers) — Anthropic이 아닌 모델(Bedrock, Vertex, Foundry, OpenRouter, Ollama, vLLM, llama.cpp 등)을 동일한 claude 인터페이스를 통해 실행합니다. 각 경로는 래퍼 바이너리(wrapper binary)로 PATH(~/.claudepot/bin/<name>)에 설치되고 별도의 데스크톱 프로필(~/Library/Application Support/Claude-3p/)을 가지므로, 기본 Claude는 절대 건드리지 않습니다. 이 경로들은 디스크 상에서 형제 관계(siblings)를 유지하며, 교체되거나 기본값으로 설정되지 않습니다 (no swap, no default).
Providers tab
에이전트(Agents) — 크론 표현식(cron expression) (평일 오전 8시마다, 매주 월요일 아침 등 cron이 표현할 수 있는 모든 것) 또는 필요 시 claude -p 프롬프트를 예약하여 실행할 수 있습니다. 각 실행 결과는 표준 출력(stdout), 표준 에러(stderr), 종료 코드와 함께 히스토리 패널에 기록됩니다. macOS는 launchd를, Windows는 작업 스케줄러(Task Scheduler)를, Linux는 systemd-user 타이머를 사용하며 — 직접 설정할 필요 없이 자동으로 구성됩니다.
Agents tab
글로벌(Global) — 네 개의 하위 탭에 걸쳐 기기 전체의 Claude Code 상태를 읽기 전용으로 검사합니다: 설정(Config) (관리 정책/사용자 환경 설정/전역 구성/플러그인/프로젝트 간 메모리의 계층적 보기), 메모리(Memory) (CLAUDE.md 상태 — 비대화, CC의 자르기 제한을 넘은 줄 수), 팁(Tips) (CC 팁 장부로 검색 및 필터링 가능), 그리고 업데이트(Updates) (Claude Code CLI + Claude Desktop 버전, 채널, 설치). Claudepot 자체 업데이트는 설정(Settings) → 정보(About)에서 확인할 수 있습니다.
Global tab
설정(Settings) — 열여섯 개의 하위 패널: 일반(General), 모양(Appearance) (라이트/다크/시스템, paper-mono 밀도), 알림(Notifications), 네트워크(Network) (상태 표시줄 점 + 상태 페이지 폴링), 원격(Remote) (LAN 장치 — 휴대폰이 통신하는 서버를 시작 및 중지하고, 관리자 비밀번호를 설정하며, 분실된 기기를 취소하고, 패널 컴포저 상단의 빠른 프롬프트 칩을 편집할 수 있습니다), 회전(Rotation) (사용 기간 창이 임계값을 넘을 때 활성 CLI 계정을 규칙 기반으로 자동 전환 — 확인 또는 자동, 500개 항목의 감사 로그 포함), 릴레이(Relay) (다른 tailnet 기기의 Claude Code가 여기서 게시된 계정을 사용하도록 허용 — 장치 페어링, 지출량 확인, 취소), 보존(Retention) (Claude Code는 매번 실행 시 30일보다 오래된 저장된 대화를 삭제하며 아무것도 보고하지 않습니다 — 이 패널만이 그렇게 말하며 사용자의 몇 개가 삭제될 예정인지 보여줍니다), 상태(Health) (Claude Code 자체 진단, claude doctor에서 스크래핑됨), MCP (메모리 서버 상태 + 에이전트 지침 스니펫 설치기), 정리(Cleanup) (Prune 고아 세션 제거 · Slim 부피가 큰 도구 출력 페이로드 제거 · Trash 7일 되돌리기), 보호된 경로, GitHub PAT, 잠금 장치(Locks) (SQLite-lock 복구), 진단(Diagnostics) (Claudepot 자체
self-check), 그리고 About.
Settings tab
개발자를 위한 내용 (For developers)
사용자 대상 명사 4가지: account, cli, desktop, project. Rust 크레이트 3개:
| 크레이트 | 목적 |
|---|
claudepot-core | 순수 Rust 라이브러리. 모든 비즈니스 로직을 포함합니다. Tauri 의존성이 없으므로 웹뷰 없이 테스트가 가능합니다. |
| ... | |
CLI 핸들러가 참조 구현체이며, GUI는 동일한 함수를 DTO 계층으로 감싸 사용합니다. 둘 다 같은 코드를 공유합니다.
CLI 참조 (CLI reference)
claudepot account list | add | remove | inspect | verify
claudepot cli status | use <email> | clear | run <email> -- <cmd>
claudepot desktop status | use <email> | identity | reconcile | adopt
...
권위 있고 항상 최신 상태인 인터페이스를 확인하려면 claudepot --help (또는 claudepot <command> --help)를 실행하세요.
모든 명령어는 안정적인 형태의 --json(스크립팅 가능), --quiet, --verbose, --yes 옵션을 지원합니다. 종료 코드는 다음과 같습니다: 0 (성공) · 1 (일반) · 2 (모호/드리프트) · 3 (인증 실패) · 4 (데스크톱 종료 실패) · 5 (네트워크).
claudepot cli run <email> -- <cmd>는 CLAUDE_CODE_OAUTH_TOKEN이 주입된 일회성 명령을 실행하며, 온디스크 슬롯은 건드리지 않습니다.
개발 (Develop)
cargo check --workspace
cargo test --workspace
pnpm test
...
경로 처리 코드(정규화(sanitize), 비정규화(unsanitize), 표준화(canonicalize), 틸드 확장)는 가장 위험도가 높은 영역입니다. 이는 CI에서 Linux / macOS / Windows에 대해 골든 테스트를 거쳤습니다. .claude/rules/paths.md를 참조하세요.
전체 설계 문서는 내부 작업 문서입니다—dev-docs/는 로컬 전용이며 이 저장소에 포함되어 배포되지 않습니다.
보안 태세 (Security posture)
- 토큰은 로깅되거나, 전송되거나, 웹뷰로 보내지지 않습니다. 모든 사용자 출력에서는 잘립니다 (
sk-ant-oat01-Abc…xyz).
- 계정별 비밀 정보는 OS 키체인에 저장됩니다 (macOS Keychain, Windows Credential Manager, Linux Secret Service).
- macOS의 개별적인 키체인 영역: Claude Code의
Claude Code-credentials 항목과 Claudepot의 크로스 바이너리 비밀 정보(계정 자격 증명, GitHub PAT)는 검증된 쓰기를 통해 /usr/bin/security 서브프로세스를 거칩니다. 반면, keyring 크레이트는 단일 바이너리만 읽을 수 있는 슬롯 전용으로 예약됩니다. 이들은 상호 교환할 수 없습니다.
- 마스킹(Redaction) (
sk-ant-*, OAuth bearer, JWTs, Authorization headers, URL params, cookies)은 세션 이벤트가 UI나 SQLite 인덱스에 도달하기 전에 실행됩니다.
- SQLite의 WAL/SHM 사이드카는
chmod 0600으로 강제 설정됩니다.
- Tauri
opener 범위는 https://console.anthropic.com/settings/keys로 제한됩니다.
전체 규칙은 .claude/rules/architecture.md를 참조하십시오.
라이선스 (License)
ISC — LICENSE를 참조하십시오.