* 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.
16 KiB
Cloud CLI(別名 Claude Code UI)
Claude Code、Cursor CLI、Codex のためのデスクトップ/モバイル UI。
ローカルでもリモートでも使え、アクティブなプロジェクトとセッションをどこからでも閲覧できます。
CloudCLI Cloud · ドキュメント · Discord · バグ報告 · コントリビュート
スクリーンショット
デスクトップビュー
プロジェクト概要とチャットを表示するメイン画面 |
モバイル体験
タッチ操作に対応したレスポンシブなモバイルデザイン |
CLI 選択
Claude Code、Cursor CLI、Codex から選択 |
|
機能
- レスポンシブデザイン - デスクトップ/タブレット/モバイルでシームレスに動作し、モバイルからも Agents を利用可能
- インタラクティブチャット UI - Agents とスムーズにやり取りできる内蔵チャット UI
- 統合シェルターミナル - 内蔵シェル機能で Agents の CLI に直接アクセス
- ファイルエクスプローラー - シンタックスハイライトとライブ編集に対応したインタラクティブなファイルツリー
- Git エクスプローラー - 変更の表示、ステージ、コミット。ブランチ切り替えも可能
- セッション管理 - 会話の再開、複数セッションの管理、履歴の追跡
- プラグインシステム - カスタムプラグインで CloudCLI を拡張 — 新しいタブ、バックエンドサービス、連携を追加できます。自分で構築する →
クイックスタート
CloudCLI Cloud(推奨)
最速で始める方法 — ローカルのセットアップは不要です。Web、モバイルアプリ、API、またはお気に入りの IDE からアクセスできる、フルマネージドでコンテナ化された開発環境を利用できます。
セルフホスト(オープンソース)
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 | |
|---|---|---|
| 対象ユーザー | 自分のマシン上でローカルの agent セッションに対してフル UI を使いたい開発者 | クラウド上で動く agents をどこからでも利用したいチーム/開発者 |
| アクセス方法 | ブラウザ([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 が提供するのは環境であり、AI そのものではありません。
セキュリティとツール設定
🔒 重要なお知らせ すべての Claude Code ツールは デフォルトで無効 です。これにより、潜在的に有害な操作が自動的に実行されることを防ぎます。
ツールの有効化
- ツール設定を開く - サイドバーの歯車アイコンをクリック
- 必要なツールだけを選んで有効化 - 本当に使うものだけをオンにする
- 設定を適用 - 設定内容はローカルに保存されます
推奨アプローチ: まずは基本ツールだけを有効にし、必要に応じて追加してください。これらの設定は後からいつでも調整できます。
プラグイン
CloudCLI にはプラグインシステムがあり、独自のフロントエンド UI と(必要に応じて)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 → — このリポジトリを fork して独自プラグインを作れます。フロントエンド描画、ライブコンテキスト更新、バックエンドサーバーへの RPC 通信を含む動作例が入っています。
プラグインのドキュメント → — プラグイン API、manifest 形式、セキュリティモデルなどの完全ガイド。
FAQ
Claude Code Remote Control とはどう違いますか?
Claude Code Remote Control は、ローカル端末で既に動作しているセッションへメッセージを送れる仕組みです。マシンを起動したままにし、端末も開いたままにする必要があり、ネットワーク接続がない状態が約 10 分続くとセッションがタイムアウトします。
CloudCLI UI と CloudCLI Cloud は、Claude Code の横に別物として存在するのではなく、Claude Code を拡張します — MCP サーバー、権限、設定、セッションは Claude Code がネイティブに使うものと完全に同一です。複製したり、別系統で管理したりしません。
- すべてのセッションにアクセス — CloudCLI UI は
~/.claudeフォルダのすべてのセッションを自動検出します。Remote Control は、Claude モバイルアプリで利用可能にするため、1つのアクティブセッションだけを公開します。 - 設定はあなたの設定 — CloudCLI UI で変更した MCP サーバー、ツール権限、プロジェクト構成は、Claude Code の設定に直接書き込まれて即座に反映され、その逆(Claude Code での変更が UI に反映)も同様です。
- 対応エージェントがさらに充実 — Claude Code に加えて Cursor CLI、Codex にも対応しています。
- チャット窓だけではない完全な UI — ファイルエクスプローラー、Git 統合、MCP 管理、シェル端末などがすべて組み込まれています。
- CloudCLI Cloud はクラウド上で稼働 — ノートパソコンを閉じてもエージェントは動き続けます。監視が要る端末も、スリープ防止も不要です。
AI のサブスクリプションは別途支払いが必要ですか?
はい。CloudCLI は環境を提供するものであり、AI は含まれません。Claude、Cursor、Codex のいずれかのサブスクリプションはご自身でご用意ください。CloudCLI Cloud のホスティング環境はそれに加えて月額 €7 から提供されます。
CloudCLI UI をスマホで使えますか?
はい。セルフホストの場合は、自身のマシンでサーバーを起動し、ネットワーク内のブラウザで [yourip]:port を開いてください。CloudCLI Cloud を使う場合は、任意のデバイスからアクセスできます。VPN もポートフォワーディングも不要で、セットアップも不要です。ネイティブアプリも開発中です。
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 を活用したプロジェクト管理とタスク計画



