프로젝트 소개

ccgui는 여러 명령줄 AI 코딩 런타임을 단일 그래픽 인터페이스 뒤에 배치하는 오픈소스 데스크톱 클라이언트입니다. 터미널에서 작업하는 대신 앱을 열고 프로젝트 폴더를 선택한 후 AI 엔진과 채팅하여 코드 작성, 버그 수정, Git 커밋을 수행합니다. 스트리밍 출력, 사고 추적, 도구 호출이 실시간으로 표시되며, 엔진이 보고할 때 토큰 사용량도 나타납니다. 엔진 및 제공자 이 앱은 Claude Code, Codex CLI, Kimi CLI, Grok CLI, Pi CLI, OMP CLI, DeepSeek Harness용 런타임 어댑터를 등록하며, 세션별로 컴포저에서 엔진을 선택할 수 있습니다. 제공자 채널은 별도의 자격 증명 저장소 대신 각 CLI의 자체 네이티브 구성 파일에 기록되며, GLM, Kimi, DeepSeek, MiniMax, MiMo, Bailian, LongCat, OpenCode Go, OpenRouter 등의 서비스용 사전 설정이 포함됩니다. Claude, Codex, Grok 채널은 CC Switch에서 가져올 수 있습니다. Pi 계열 엔진은 설정에서 API 키 및 OAuth 로그인을 지원합니다. 같은 창의 다른 탭은 서로 다른 모델이나 사고 수준을 실행할 수 있으며, 각 CLI의 네이티브 세션 파일을 읽어 세션 기록이 재시작 후에도 유지됩니다. 채팅 경험 응답은 애니메이션 프레임별로 스트리밍되며 캐시된 구문 강조로 긴 출력도 부드럽게 유지됩니다. 사고 스트림은 응답 텍스트와 병합되고, 안정되면 자동으로 접히며 필요 시 확장됩니다. 도구 호출은 확장 가능한 매개변수와 결과(Git Diff 및 Bash 뷰어 포함)가 있는 실시간 행으로 표시됩니다. 실행 상태 표시줄이 엔진 진행 상황을 반영하고, 메시지 앵커 레일로 사용자 메시지 사이를 이동할 수 있습니다. 붙여넣은 이미지는 첨부 파일이 되고, 파일 언급은 .gitignore 인식 프로젝트 인덱스를 사용하며, 권한 거부는 추가 디렉터리를 부여하여 인라인으로 해결할 수 있습니다. 개발자 패널 채팅 외에도 Git 상태 색상과 드래그 앤 드롭이 있는 가상화 파일 트리, Markdown 미리보기가 있는 내장 CodeMirror 편집기 창, xterm과 WebGL을 사용하는 PTY 기반 터미널 독, 스테이징·커밋·브랜치 검색·diff/기록 검사를 위한 Git 패널, 키보드 기반 명령 팔레트가 포함됩니다. 플러그인 시스템 퍼스트파티 플러그인 SDK(@ccgui/plugin-sdk)는 앱 내 런타임, 관리자 UI, 신뢰 경계와 함께 제공됩니다. 선언적 플러그인은 프론트엔드 코드 없이 설정 섹션과 구성 기반 UI를 추가할 수 있으며, 내장 표면도 동일한 확장 지점을 통해 등록됩니다. 플러그인 개발 가이드는 docs 폴더에 포함되어 있습니다. 설정, 네트워크 및 업데이트 앱 및 엔진 트래픽용 프록시 설정, 토큰 인증 WebSocket 브리지와 QR 코드 진입을 통해 다른 기기에 UI를 제공하는 LAN 웹 액세스, 프로젝트용 작업 공간 그룹화, GitHub Releases에 대한 앱 내 자동 업데이트, 변경 로그 대화상자, 서명된 macOS 빌드를 제공합니다. UI는 중국어와 영어 이중 언어를 지원합니다. 플랫폼 및 빌드 macOS(Apple Silicon, 서명됨), Windows(NSIS .exe), Linux(.AppImage)용 설치 프로그램이 게시됩니다. 스택은 Tauri 2와 Rust 백엔드(git2, rusqlite, portable-pty, axum), React 18 + TypeScript + Tailwind CSS 4 + zustand 프론트엔드(Vite 6 빌드)로 구성됩니다. 테스트는 프론트엔드에서 Vitest, Rust 쪽에서 cargo test를 사용합니다. 개발에는 Node.js 20+, pnpm 10, 안정적인 Rust, OS별 표준 Tauri 사전 요구 사항이 필요합니다. 저장소는 pnpm 워크스페이스이며 플러그인 SDK는 packages/plugin-sdk에 있습니다. 이 프로젝트는 MIT 라이선스이며, 원래 CodexMonitor에서 시작되었고 v1.0.0부터 코드베이스가 처음부터 다시 작성되었음을 명시합니다.