Files
claudecodeui/README.ko.md
Haile 4cee5e7286 Fix/resolve different bugs (#964)
* fix: don't overlap thinking banner over conversation

* feat: support message queue and add attention indicator

* fix(shell): use c to copy for claude

* fix: strip timestamp tags from cursor

* fix: select project when loading session from direct URL

* feat: support attached images for all providers

* feat(opencode): support permission options

* fix: resolve source control and chat UX bugs

- make staging real in the git panel: new /stage and /unstage endpoints,
  /status now reports the actual index via porcelain -z (handles renames,
  conflicts, and paths with spaces), and Stage/Unstage All run real git
  commands instead of toggling client-side state
- add branch search to the header dropdown and Branches tab
- persist the chosen permission mode per provider so a brand-new chat
  keeps it once the session id arrives, instead of reverting to default
- replace cmdk's fuzzy model search with strict token matching so
  "chatgpt" no longer surfaces unrelated models
- unit tests for the git status parser

* feat(git): commit graph in history view and cross-spawn everywhere

- render a VSCode-style commit graph in the source control history:
  lane-assignment algorithm, SVG strip with colored rails, merge and
  branch curves, commit dots, and branch/tag badges per commit
- /commits returns parents and ref decorations across all branches
  (--branches --remotes --tags --topo-order) using unit-separator
  fields so pipes in commit subjects can't break parsing
- collect stats via a single --shortstat pass instead of one
  `git show --stat` call per commit; raise the history limit to 50
- replace child_process spawn with cross-spawn in all runtimes,
  routes, and services: it resolves .cmd shims and PATHEXT on
  Windows (fixing taskmaster's npx invocations) and delegates to
  native spawn elsewhere, removing the per-file win32 ternaries
- unit tests for the log parser and lane assignment

* fix: remove gemini support since google discontinued it

* fix: address code review findings

- validate chat image attachments server-side: only files inside the
  ~/.cloudcli/assets upload store may reach provider file reads
- harden asset serving with nosniff and attachment disposition for
  SVGs to prevent stored XSS
- show the timestamp on image-only user messages
- serialize git stage/unstage calls and defer the status re-sync so
  rapid toggles can't interleave or flicker
- use a literal hex fallback for commit ref badges (alpha suffix on a
  var() string produced invalid CSS)
- stop binding a URL session to a guening
  project instead
- add the missing attentionRequiredIndicator key to all sidebar locales
- clean up dangling conjunctions left the
  de/ru/tr/ja/zh-CN/zh-TW READMEs

* fix: address code scanning findings

- enforce a second image trust boundary in the provider builders:
  buildClaudeUserContent/buildCodexInputItems only accept files inside
  the upload store or the run's working directory (CodeQL path
  injection)
- drop an always-true selectedProject check in handleSubmit
- remove the unused resume option from spawnCursor

* fix: use CodeQL-recognized containment check for image reads

Replace the path.relative guard in isPathInsideDirectory with the
resolve + startsWith(root + sep) idiom so the path-injection barrier
is visible to code scanning; behavior is unchanged.

* fix(security): canonicalize Claude image attachment reads

Resolve image attachment paths with realpath before reading so symlinks
inside allowed roots cannot escape to arbitrary files. Preserve support for
symlinked project/upload roots and add focused coverage for both cases.

* fix: show agent subtask

* fix(sessions): title app-created sessions from the first user message

App-created sessions (started by sending a message from cloudcli) were
titled with placeholder names — "Untitled Codex Session" from the disk
indexer and, briefly, "New session" from the empty canonical upsert —
before a later sync finally settled on the right text, causing the
sidebar title to flicker.

- Codex/OpenCode synchronizers now title app-created sessions (distinct
  app id mapped to a provider id) from the first user message, while
  sessions found purely by indexing keep their existing setup. Claude
  keeps its AI-generated titles; Cursor already used the first message.
- Decode OpenCode's JSON-string-literal prompts so titles no longer
  surface wrapped in quotes; hoist unwrapJsonStringLiteral into
  shared/utils since it's now used by both the reader and synchronizer.
- Guard the sidebar upsert merge so an empty summary can never blank out
  a title that is already set.
- Add codex/opencode synchronizer tests for the app-created vs indexed
  naming paths.

* fix(chat): make message queuing reliable across sessions and turn boundaries

Queued messages had four related defects:

- A queued message flashed and then vanished at flush time: concurrent
  transcript refreshes (the `complete` handler racing the watcher-triggered
  update) could resolve out of order, letting a stale response overwrite
  newer server messages after the optimistic row was pruned. Session slots
  now carry a monotonic fetch ticket and discard stale fetch/refresh/
  fetchMore responses.

- Switching sessions flushed the previous session's queued draft into the
  newly viewed one (sending it with the wrong provider's settings, e.g. a
  Claude model into a Codex session). The composer flush is now scoped to
  its session, and a draft restored into an idle session sends after a
  short grace period so a live-run ack can cancel it.

- The thinking banner never appeared for a queued turn: the chat handler's
  session-keyed completeRun safety net could fire after a queued message
  had already started the session's next run, emitting a spurious
  `complete` that killed it. The safety net is now scoped to its own run
  via completeRunIfCurrent (with a regression test).

- Queued messages only sent while their session was being viewed. Drafts
  now persist their send options (model, effort, permissions) at queue
  time, and a new app-level useQueuedMessageAutoSend hook dispatches a
  non-viewed session's queued message as soon as its run completes, using
  the storage key as the claim ticket to prevent double sends.
2026-07-08 10:32:32 +02:00

13 KiB

CloudCLI UI

Cloud CLI (일명 Claude Code UI)

Claude Code, Cursor CLI, Codex, 용 데스크톱 및 모바일 UI입니다.
로컬 또는 원격에서 실행하여 어디서나 활성 프로젝트와 세션을 확인하세요.

CloudCLI Cloud · 문서 · Discord · 버그 신고 · 기여 안내

CloudCLI Cloud Discord 커뮤니티

siteboon%2Fclaudecodeui | Trendshift


스크린샷

데스크톱 보기

데스크톱 인터페이스
프로젝트 개요와 채팅을 보여주는 메인 인터페이스

모바일 경험

모바일 인터페이스
터치 내비게이션이 포함된 반응형 모바일 디자인

CLI 선택

CLI 선택
Claude Code, Cursor CLI 및 Codex 중 선택

기능

  • 반응형 디자인 - 데스크톱, 태블릿, 모바일을 아우르는 매끄러운 경험으로 어디서든 Agents를 사용할 수 있습니다
  • 대화형 채팅 인터페이스 - 내장된 채팅 UI를 통해 에이전트와 자연스럽게 소통
  • 통합 셸 터미널 - 셸 기능을 통해 Agents CLI에 직접 접근
  • 파일 탐색기 - 구문 강조 및 실시간 편집을 갖춘 인터랙티브 파일 트리
  • Git 탐색기 - 변경 사항 보기, 스테이징 및 커밋. 브랜치 전환 기능 포함
  • 세션 관리 - 대화를 재개하고, 여러 세션을 관리하며 기록을 추적
  • 플러그인 시스템 - 커스텀 탭, 백엔드 서비스, 통합을 추가하여 CloudCLI 확장. 직접 빌드 →
  • TaskMaster AI 통합 (선택사항) - AI 중심의 작업 계획, PRD 파싱, 워크플로 자동화를 통한 고급 프로젝트 관리
  • 모델 호환성 - Claude, GPT 모델 계열에서 작동 (GET /api/providers/:provider/models API에서 전체 지원 모델 확인)

빠른 시작

CloudCLI Cloud (추천)

가장 빠르게 시작하는 방법 — 로컬 설정 없이도 가능합니다. 웹, 모바일 앱, API 또는 선호하는 IDE에서 이용할 수 있는 완전 관리형 컨테이너화된 개발 환경을 제공합니다.

CloudCLI Cloud 시작하기

셀프 호스트 (오픈 소스)

npm

npx로 즉시 CloudCLI UI를 실행하세요 (Node.js v22+ 필요):

npx @cloudcli-ai/cloudcli

정기적으로 사용한다면 전역 설치:

npm install -g @cloudcli-ai/cloudcli
cloudcli

http://localhost:3001을 열면 기존 세션이 자동으로 발견됩니다.

자세한 구성 옵션, PM2, 원격 서버 설정 등은 **문서 →**를 참고하세요.

Docker Sandboxes (실험적)

하이퍼바이저 수준 격리로 에이전트를 샌드박스에서 실행합니다. 기본 에이전트는 Claude Code입니다. sbx CLI가 필요합니다.

npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project

Claude Code, Codex를 지원합니다. 자세한 내용은 샌드박스 문서를 참고하세요.


어느 옵션이 적합한가요?

CloudCLI UI는 CloudCLI Cloud를 구동하는 오픈 소스 UI 계층입니다. 로컬 머신에서 직접 셀프 호스트하거나, CloudCLI Cloud(완전 관리형 클라우드 환경, 팀 기능, 심화 통합 제공)를 사용할 수 있습니다.

CloudCLI UI (셀프 호스트) CloudCLI Cloud
적합한 대상 로컬 에이전트 세션을 위한 전체 UI가 필요한 개발자 어디서든 접근 가능한 클라우드에서 에이전트를 운영하고자 하는 팀 및 개발자
접근 방법 [yourip]:port를 통해 브라우저 접속 브라우저, IDE, REST API, n8n
설정 npx @cloudcli-ai/cloudcli 설정 불필요
기기 유지 필요 여부 예 (머신 켜둬야 함) 아니오
모바일 접근 네트워크 내 브라우저 모든 기기 (네이티브 앱 예정)
세션 접근 ~/.claude에서 자동 발견 클라우드 환경 내 세션
지원 에이전트 Claude Code, Cursor CLI, Codex Claude Code, Cursor CLI, Codex
파일 탐색기 및 Git UI에 통합됨 UI에 통합됨
MCP 구성 UI에서 관리, 로컬 ~/.claude 설정과 동기화됨 UI에서 관리
IDE 접근 로컬 IDE 클라우드 환경에 연결된 모든 IDE
REST API
n8n 노드 아니오
팀 공유 아니오
플랫폼 비용 무료, 오픈 소스 월 €7부터

둘 다 자체 AI 구독(Claude, Cursor 등)을 그대로 사용합니다 — CloudCLI는 환경만 제공합니다.


보안 및 도구 구성

🔒 중요 공지: 모든 Claude Code 도구는 기본적으로 비활성화되어 있습니다. 이는 잠재적인 유해 작업이 자동 실행되는 것을 방지하기 위한 조치입니다.

도구 활성화

  1. 도구 설정 열기 - 사이드바의 톱니바퀴 아이콘 클릭
  2. 선택적으로 활성화 - 필요한 도구만 켜기
  3. 설정 적용 - 선호도는 로컬에 저장됨

도구 설정 모달 도구 설정 인터페이스 - 필요한 것만 켜세요

권장 방법: 기본 도구를 먼저 켜고 필요할 때 추가하세요. 언제든지 조정 가능합니다.


플러그인

CloudCLI는 커스텀 탭과 선택적 Node.js 백엔드가 포함된 플러그인 시스템을 제공합니다. Settings > Plugins에서 Git 저장소에서 플러그인을 설치하거나 직접 빌드할 수 있습니다.

이용 가능한 플러그인

플러그인 설명
Project Stats 현재 프로젝트의 파일 수, 코드 줄 수, 파일 유형 분포, 가장 큰 파일, 최근 수정 파일을 표시
Web Terminal 다중 탭을 지원하는 전체 xterm.js 터미널
Claude Watch 장시간 실행 중인 Claude Code 세션의 중단 상태를 감시하고 프로세스 제어를 제공
CloudCLI Scheduler 워크스페이스 범위 예약 프롬프트를 만들고 Codex, Claude Code 같은 로컬 CLI로 실행
PRISM CloudCLI CloudCLI 안에서 Claude Code 세션 인텔리전스와 토큰 소모 가시성을 제공
Sessions 활성 Claude Code 세션을 보고, 관리하고, 종료
Token Cost Calculator 모델 가격과 토큰 사용량으로 API 비용을 계산하고 모델 가격 프리셋을 지원
Task Queue 에이전트 작업을 보고, 필터링하고, 실행하는 작업 큐 대시보드
GitHub Issues Board GitHub Issues용 Kanban 보드. TaskMaster 양방향 동기화와 /github-task CLI 스킬 자동 설치 지원

직접 만들기

Plugin Starter Template → — 이 저장소를 포크하여 플러그인 구축. 프런트엔드 렌더링, 실시간 컨텍스트 업데이트, RPC 통신 예제 포함.

플러그인 문서 → — 플러그인 API, 매니페스트 포맷, 보안 모델 등을 설명.


FAQ

Claude Code Remote Control과 어떻게 다른가요?

Claude Code Remote Control은 이미 로컬 터미널에서 실행 중인 세션으로 메시지를 전송합니다. 이 경우 기계가 켜져 있어야 하고 터미널을 열어 둬야 하며, 네트워크 연결 없이 약 10분 후 타임아웃됩니다.

CloudCLI UI와 CloudCLI Cloud는 Claude Code를 확장하며 별도로 존재하지 않습니다 — MCP 서버, 권한, 설정, 세션은 Claude Code에서 그대로 사용됩니다.

  • 모든 세션을 다룬다 — CloudCLI UI는 ~/.claude 폴더에서 모든 세션을 자동 발견합니다. Remote Control은 단일 활성 세션만 노출합니다.
  • 설정은 그대로 — CloudCLI UI에서 변경한 MCP, 도구 권한, 프로젝트 설정은 Claude Code에 즉시 반영됩니다.
  • 지원 에이전트가 더 많음 — Claude Code, Cursor CLI, Codex 지원.
  • 전체 UI 제공 — 단일 채팅 창이 아닌 파일 탐색기, Git 통합, MCP 관리 및 셸 터미널 포함.
  • CloudCLI Cloud는 클라우드에서 실행 — 노트북을 닫아도 에이전트가 실행됩니다. 터미널을 계속 확인할 필요 없음.
AI 구독을 별도로 결제해야 하나요?

네. CloudCLI는 환경만 제공합니다. Claude, Cursor, Codex 구독 비용은 별도로 부과됩니다. CloudCLI Cloud는 관리형 환경을 월 €7부터 제공합니다.

CloudCLI UI를 휴대폰에서 사용할 수 있나요?

네. 셀프 호스트인 경우 기계에서 서버를 실행하고 네트워크의 아무 브라우저에서 [yourip]:port를 열면 됩니다. CloudCLI Cloud는 어떤 기기에서도 열 수 있으며, 네이티브 앱도 준비 중입니다.

UI에서 변경하면 로컬 Claude Code 설정에 영향을 주나요?

네, 셀프 호스트에서는 그렇습니다. CloudCLI UI는 Claude Code가 사용하는 동일한 ~/.claude 설정을 읽고 씁니다. UI에서 추가한 MCP 서버가 Claude Code에 즉시 나타납니다.


커뮤니티 및 지원

  • 문서 — 설치, 구성, 기능, 문제 해결 안내
  • Discord — 도움 및 커뮤니티 참여
  • GitHub Issues — 버그 보고 및 기능 요청
  • 기여 안내 — 프로젝트 참여 방법

라이선스

GNU General Public License v3.0 - 자세한 내용은 LICENSE 파일 참조.

이 프로젝트는 GPL v3 라이선스 하에 오픈 소스로 공개되어 있으며 자유롭게 사용, 수정, 배포할 수 있습니다.

감사의 말

사용 기술

  • Claude Code - Anthropic 공식 CLI
  • Cursor CLI - Cursor 공식 CLI
  • Codex - OpenAI Codex
  • React - 사용자 인터페이스 라이브러리
  • Vite - 빠른 빌드 도구 및 개발 서버
  • Tailwind CSS - 유틸리티 우선 CSS 프레임워크
  • CodeMirror - 고급 코드 에디터
  • TaskMaster AI (선택사항) - AI 기반 프로젝트 관리 및 작업 계획

스폰서


Claude Code, Cursor, Codex 커뮤니티를 위해 정성껏 제작되었습니다.