zhukunpenglinyutong/desktop-cc-gui

★ 4,272⑂ 383

Multi-engine AI coding desktop client (Tauri). Claude Code, Codex, Gemini, OpenCode, DeepSeek Harness and more in one GUI.

About zhukunpenglinyutong/desktop-cc-gui

zhukunpenglinyutong/desktop-cc-gui is an open-source project on GitHub, mainly written in TypeScript. Multi-engine AI coding desktop client (Tauri). Claude Code, Codex, Gemini, OpenCode, DeepSeek Harness and more in one GUI. It currently holds 4,272 stars and 383 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the AI Coding Agents board.

GitHub Repository Details

Repository zhukunpenglinyutong/desktop-cc-gui · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

Desktop CC GUI

https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/ccgui icon

English · 简体中文

https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/zhukunpenglinyutong%2Fdesktop-cc-gui | Trendshift https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/AtomGit G-Star

![][github-contributors-shield] ![][github-forks-shield] ![][github-stars-shield] ![][github-issues-shield] platform

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, DeepSeek Harness (DSH), Antigravity, OpenCode, and Qoder — 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.

---

Supported engines

Every engine below is wired in through a dedicated protocol adapter in the Rust backend — streaming events, session history, and provider channels are handled natively, not scraped off a terminal screen.

https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Claude Code logo Claude Code   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Codex CLI logo Codex CLI   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Kimi CLI logo Kimi CLI   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Grok CLI logo Grok CLI   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Pi CLI logo Pi CLI   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/oh-my-pi logo OMP CLI   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/DeepSeek Harness logo DeepSeek Harness   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Antigravity logo Antigravity   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/OpenCode logo OpenCode   https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/Qoder logo Qoder

---

What can ccgui do?

One client, ten 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

---

Friendship Link

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

AtomGit: hosts this project in China, helping users in mainland China access the project and download Releases faster.

Thank you for AtomGit platform G-Star certification

---

Contributors

Thanks to all the contributors who help make ccgui better.

https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/HEAD/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

[github-contributors-shield]: https://img.shields.io/github/contributors/zhukunpenglinyutong/desktop-cc-gui?color=c4f042&labelColor=black&style=flat-square [github-forks-shield]: https://img.shields.io/github/forks/zhukunpenglinyutong/desktop-cc-gui?color=8ae8ff&labelColor=black&style=flat-square [github-issues-link]: https://github.com/zhukunpenglinyutong/desktop-cc-gui/issues [github-issues-shield]: https://img.shields.io/github/issues/zhukunpenglinyutong/desktop-cc-gui?color=ff80eb&labelColor=black&style=flat-square [github-license-link]: https://github.com/zhukunpenglinyutong/desktop-cc-gui/blob/main/LICENSE [github-stars-shield]: https://img.shields.io/github/stars/zhukunpenglinyutong/desktop-cc-gui?color=ffcb47&labelColor=black&style=flat-square

GitHub Stars & Activity

4,272Stars
383Forks
0Open issues
TypeScriptLanguage

GitHub Popularity

GitHub stars4,272
Forks383
Open issues0
Primary languageTypeScript
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

thedotmack / claude-mem

TypeScript★ 94,360⑂ 8,336
2

Egonex-AI / Understand-Anything

TypeScript★ 83,490⑂ 7,043
3

stablyai / orca

TypeScript★ 73,877⑂ 4,841
4

ruvnet / ruflo

TypeScript★ 72,954⑂ 8,660
5

diegosouzapw / OmniRoute

TypeScript★ 68,672⑂ 9,716
6

Yeachan-Heo / oh-my-claudecode

TypeScript★ 39,279⑂ 3,510
7

JCodesMore / ai-website-cloner-template

TypeScript★ 34,705⑂ 5,055
8

iOfficeAI / AionUi

TypeScript★ 32,998⑂ 3,418

More AI Rankings