desktop-cc-gui README

The project's README from github.com/zhukunpenglinyutong/desktop-cc-gui. As one markdown file: README.md.

Desktop CC GUI

ccgui icon

English · 简体中文

zhukunpenglinyutong%2Fdesktop-cc-gui | Trendshift

ccgui is an open-source multi-engine AI coding desktop client. In plain words: it brings command-line AI coding runtimes — Claude Code, Codex CLI, Kimi CLI, Grok CLI, Pi CLI, OMP CLI, and DeepSeek Harness (DSH) — into one graphical interface.

No more staring at a black terminal. Open ccgui, pick a project, and chat with AI to write code, fix bugs, and commit to Git. Streaming output, thinking traces, and tool calls are visible as they happen; token usage appears when the engine reports it.

The app is built with Tauri 2 + React 18 + TypeScript + Rust and runs on macOS, Windows, and Linux. Settings and state are persisted locally. Content sent to an AI provider follows the boundary of the channel you configured for that CLI.


What can ccgui do?

One client, seven AI engines

A chat box designed for coding

Not just chat — a full set of dev panels

Plugin system

Settings, network, and updates


Download

Grab the installer for your platform from the Releases page:

Platform Installer
macOS (Apple Silicon, signed) aarch64.dmg
Windows .exe (NSIS)
Linux .AppImage

After installing, open Settings, configure a provider channel for the CLI you want (or sign in), add a project folder, and start chatting.

Using DeepSeek Harness (DSH)

  1. Install the DSH CLI on your machine and configure its models and API keys in DSH itself — not as a separate vendor preset inside ccgui.
  2. In Settings → DeepSeek Harness, ccgui can adopt a running local dsh web host or auto-start one.
  3. Select DeepSeek Harness in the composer engine picker. Chat runs through DSH's headless profile; models and credentials stay in DSH.

Getting it running (setup guide)

Want to build it yourself or contribute? Three steps.

Step 1: Prepare your environment

Tool Version What for
Node.js 20 or newer Runs the frontend toolchain
pnpm 10 (pinned via packageManager) Installs dependencies
Rust stable (install via rustup) Compiles the backend

Each OS also needs the standard Tauri prerequisites — see the official Tauri guide:

Step 2: Install dependencies

git clone https://github.com/zhukunpenglinyutong/desktop-cc-gui.git
cd desktop-cc-gui
pnpm install

Note: this is a pnpm workspace (the plugin SDK lives in packages/plugin-sdk); the lockfile is pnpm-lock.yaml.

Step 3: Start it

pnpm dev

A few tips:

Building installers

pnpm build:mac                 # macOS signed build (scripts/build-signed-macos.sh)
pnpm build:mac:skip-notarize   # same, skipping notarization

Windows and Linux installers are produced by the CI workflows under .github/workflows/ (release.yml, build-windows-artifact.yml).


How to work on the code (development guide)

Tech stack at a glance

Part Technology
UI React 18 + TypeScript + Tailwind CSS 4 + zustand
Build Vite 6
Desktop shell Tauri 2 (Rust backend: git2, rusqlite, portable-pty, axum)
Tests Vitest (frontend) + cargo test (Rust)

Directory layout

desktop-cc-gui/
├── src/                    # Frontend code
│   ├── features/           # ★ Feature modules: chat / files / git / terminal /
│   │                       #   settings / plugins / commands / update / open-app
│   ├── components/         # Shared UI components (incl. engine brand icons)
│   ├── i18n/               # zh + en locale bundles
│   ├── styles/             # Global styles
│   └── lib/ utils/         # Utility functions
├── src-tauri/              # Rust backend
│   └── src/                # engine/ (one module per CLI), history/, plugins/,
│                           # git.rs, terminal.rs, web.rs (LAN bridge), ...
├── packages/plugin-sdk/    # @ccgui/plugin-sdk — plugin authoring kit
├── tests/                  # Frontend integration-style tests (Vitest)
├── scripts/                # Build and packaging scripts
└── docs/                   # Plugin development guide, engine mode notes

The typical workflow for changing a feature

  1. UI-only change: find the matching module under src/features/ and edit there. New components live inside that feature's own folder.
  2. Needs backend support: add a #[tauri::command] in the matching src-tauri/src/ module and call it from the frontend via the Tauri API.
  3. Changed any UI text: route it through i18n and keep both bundles (src/i18n/zh.ts, src/i18n/en.ts) synchronized — hardcoded UI text is not allowed.

Everyday commands

Command What it does
pnpm dev Start the full app (Tauri dev mode)
pnpm build TypeScript check + frontend production build
pnpm test Run the Vitest suite
pnpm preview Preview the production frontend build
cargo test --manifest-path src-tauri/Cargo.toml Run Rust tests

Writing tests


Coding rules

Not many rules, but each exists for a reason:

  1. Run the big three before opening a PR: pnpm build (typecheck) and pnpm test green locally, plus cargo test if you touched Rust.
  2. UI text must go through i18n: every user-visible string comes from src/i18n/, and both shipped locale bundles must stay synchronized.
  3. Keep components close to home: new components start inside their own feature folder; promote to src/components/ only once they're genuinely reused across features.
  4. TypeScript strict: don't paper over things with any; write real types.
  5. Extend through the plugin SDK where possible: new settings sections and surfaces should register through the same extension points the builtin ones use.
  6. Never commit secrets: API keys and tokens must never appear in code or commit history.

Writing commit messages

Use Conventional Commits with a Chinese action phrase by default: type(scope): 中文动宾短句.

type When to use
feat New feature
fix Bug fix
refactor Refactoring (no behavior change)
docs Documentation
test Adding/updating tests
chore Housekeeping (version bumps, deps, scripts)
perf / style / ci Performance / formatting / CI

Real examples from this repo:

feat(chat): 支持工具调用参数与结果展开、Git Diff/Bash美化及完成元数据展示
fix(codex): Windows .cmd shim 下多行提示词只送达第一行
perf(chat): reveal streamed text per frame without reparsing markdown

No emoji in commit messages, and no AI-generated signatures.


Submitting your code (contribution flow)

  1. Fork the repo and clone it locally.
  2. Branch off main, named like feat/xxx or fix/xxx.
  3. Make your changes and get pnpm build + pnpm test green locally.
  4. Open a PR against this repo's main branch. Title in commit format; in the description, explain what changed, why, and how you verified it.

Not sure where to start? Browse the Issues and pick one that interests you. Found a bug or have an idea? Open an issue and let's talk.

Want to dig deeper?


License

MIT


Thanks for the support and feedback from the friends at LINUX DO.


Contributors

Thanks to all the contributors who help make ccgui better.

Contributors

Acknowledgements

This project originally started from CodexMonitor. Since v1.0.0 the codebase has been rewritten from scratch — no CodexMonitor code remains, but the original inspiration is gratefully acknowledged.


Star History

Star History Chart

desktop-cc-gui (zhukunpenglinyutong/desktop-cc-gui)

Searching Database…

这是什么?ccgui 是一个桌面图形界面,把命令行 AI 编程工具(Claude Code、Codex CLI、Kimi CLI、Grok CLI、Pi CLI、OMP CLI 和 DeepSeek Harness)集中到同一个图形界面里,你可以直接和 AI 智能体对话来写代码、修 bug、提交到 Git,而不必盯着光秃秃的终端。
它本身是一个编程智能体,还是只是封装了其他 CLI?ccgui 并不自带 AI 引擎——它是一个 Tauri + React 桌面外壳,为 Claude Code、Codex CLI 这类现有 CLI 工具注册适配器,让你可以按会话选择由哪个引擎来跑。
怎么把它跑起来?从 Releases 页面获取适合你操作系统的预编译安装包(macOS .dmg、通过 NSIS 打包的 Windows .exe,或 Linux .AppImage),然后打开设置,为你要用的 CLI 配置服务商通道或登录。
这些 AI CLI 需要单独安装吗?对大多数引擎来说,服务商通道会由 ccgui 直接写入各 CLI 自己的原生配置文件。DeepSeek Harness(DSH)是例外——你需要自行安装 DSH CLI 并在其中配置模型和 API key,然后 ccgui 连接到正在运行或自动启动的 DSH web 主机。
它支持哪些操作系统?ccgui 为 macOS(Apple Silicon)、Windows(通过 NSIS 打包的 .exe)和 Linux(.AppImage)提供经过签名的构建。
我的聊天数据和代码会去哪里?设置和会话状态都保存在你本机上,发送给 AI 服务商的内容遵循你为该 CLI 配置的通道的边界——ccgui 并没有单独运行服务端凭据存储。
除了聊天,开发面板里还有什么?除了聊天输入区,ccgui 还提供带 Git 状态着色的虚拟化文件树和内置 CodeMirror 编辑器、真正基于 PTY 的终端(xterm + WebGL)、用于暂存、提交和差异对比的 Git 面板,以及键盘驱动的命令面板。
可以用插件扩展 ccgui 吗?可以——官方插件 SDK(@ccgui/plugin-sdk)让插件通过内置应用使用的同一批扩展点来添加设置分区和配置驱动的 UI,无需附带自定义前端代码。
能从网络里的其他设备访问 ccgui 吗?可以,局域网 Web 访问功能通过带令牌认证的 WebSocket 桥接向其他设备提供界面,设置里有二维码可快速配对。
这个项目是怎么来的?ccgui 最初源自一个叫 CodexMonitor 的项目,但从 v1.0.0 起代码库已彻底推倒重写,只保留了最初的灵感。
Size
209.9 MB
Stars
4.5K
Age
8mo
Commits · 90 Days