* feat(desktop): show per-format file icons on chat file cards Generated-file cards, the turn change card and message attachments used one grey Material glyph for every file. They now render a folded-corner document icon with a colored body and the extension label (PDF red, Word blue, Markdown blue, Excel green, PowerPoint orange, archives amber, code purple, ...), built on react-file-icon instead of hand-drawn art. Extensions the library does not know are mapped to a close sibling or to a category color, and jsonl now counts as code. Brand colors live in lib/fileTypePalette.ts because react-file-icon writes them into SVG attributes, where CSS variables are not reliable. * fix(desktop): open workspace documents written through a symlinked path Clicking an output card for /tmp/app/report.pdf opened the system app instead of the workspace preview when the session's canonical workdir is /private/tmp/app. The gate compared path strings, so a symlinked form, a workdir that had not loaded yet, or a registered access root all looked like "outside the workspace". The string check stays as the fast path. When it says "outside", ask the server through getWorkspaceFile, which resolves real paths: an accepted document opens in the workspace, a 403 still goes to the system app. * fix(desktop): load local images in the web UI and H5 A bare <img src> cannot send Authorization, and the server refuses a credential-less cross-site subresource load, so the browser blocked the response (net::ERR_BLOCKED_BY_ORB) and chat showed "unable to load image". Only the Electron shell worked, because its main process injects the credential for an allowlist of media routes. When an <img> fails, retry once through the credentialed client and show the result as a blob: URL; the failure notice appears only if that also fails. Covers the inline image gallery, the lightbox, image generation slots and Markdown images. The credential is only ever sent to the local server's own origin. * fix(desktop): keep spreadsheet numbers whole in the workspace preview Columns without a stored width fell back to a fixed 72px, and stored widths were chosen for Excel's font, which is narrower than the preview's. Values such as 12,000.00 were clipped to "12,000...". A column the file gives no width now fits its widest cell, and a number column never ends up narrower than its numbers. Text in a column whose width the file sets is still clipped, as Excel clips it, and merged headings that spill over their span do not widen a column.
cc-haha
简体中文 · English
cc-haha is a desktop Claude Code workspace for macOS, Windows, and Linux: multi-session workspaces, global search, branch / Worktree launch, diff review, built-in browser preview, GUI permission approval, any model — Claude, ChatGPT, Grok, presets, or local endpoints — image generation, visual MCP & SubAgent managers, an Agent Teams workbench, dynamic Workflow orchestration, model trace, Computer Use, skill marketplace, colour themes, desktop pets, H5 remote access, IM integration, and scheduled tasks, all in one app. On macOS, Computer Use can operate other apps without taking over your physical mouse or keyboard.
Desktop Preview · Install · Highlights · More Docs · Sponsorship · User Group
Desktop Preview
The top row covers getting started and daily work: sessions, permissions, changes, and Computer Use. The second shows extensions: models, skills, scheduled tasks, and IM. These screenshots show the real project in the Chinese interface. Click a thumbnail to see the full screen.
Start here: install the app → connect a model → run your first session → explore settings → try real workflows. For hands-free cross-app work on macOS, follow the Computer Use guide.
Sponsorship & Partnership
This project is maintained in the author's spare time. Corporate or individual sponsorships are welcome to support ongoing development. Custom features, integrations, and business partnerships are also open for discussion.
| Sponsor | Description |
|---|---|
|
Thanks to AruHub for sponsoring this project! AruHub focuses on providing developers with a stable, long-term primary API upstream service. Built for high-frequency AI coding workflows such as Codex and Claude Code, it offers official GPT API access through enterprise groups and stable Claude enterprise groups for sustained use, with support for leading models including GPT and Claude. Image 2 / 2.5 is available around the clock, starting at CNY 0.04 per image. Pay-as-you-go billing supports high-volume enterprise usage, invoicing, and refunds. Register through the exclusive link to receive US$1 in credit usable across all models, with no model restrictions. |
|
Thanks to Atlas Cloud for sponsoring this project. Atlas Cloud is a full-modal AI inference platform that gives developers a single AI API to access video generation, image generation, and LLM APIs. Instead of managing multiple vendor integrations, you connect once and get unified access to 300+ curated models across all modalities. Atlas Cloud is already built into the cc-haha provider list, so you can pick it in settings and start using it with just an API key. Check out Atlas Cloud's new coding plan promotion for more budget-friendly API access. |
|
Thanks to ApiSmart for sponsoring this project. ApiSmart provides unified access to leading AI models through a single API. Use one API key to connect with LLM, image, and video models through an OpenAI-compatible interface. Easily switch between models, simplify billing, and improve reliability with intelligent routing and automatic failover. |
📧 Contact: relakkes@gmail.com
Install the Desktop App
- Download the macOS / Windows / Linux desktop installer from Releases.
- On first launch, configure your model provider, API key, and default model in Settings.
- Public macOS releases require signing and notarization. Draft or unsigned temporary builds may still need one-time manual approval. Unsigned Windows installers may show SmartScreen; click "More info" -> "Run anyway". See the desktop installation guide.
Release trust and privacy: Code signing policy · Privacy and network access
Run the CLI from Source
For users who want to debug the underlying CLI, server, or local development flow:
bun install
cp .env.example .env
./bin/claude-haha
See environment variables and CLI setup for more configuration options.
User Group
Scan the QR code below to join the cc-haha user group on WeCom (WeChat Work) — the conversation there is mostly in Chinese. For questions and bug reports in English, Issues is the better place. For enterprise deployment, customization, or Agent development needs, contact the author NanmiCoder.
☕ Buy Me a Coffee
If this project helps you, consider buying me a coffee — every bit of support keeps this project going ❤️
![]() WeChat Pay |
![]() Alipay |
Buy Me a Coffee |
Desktop Highlights
- Multi-session workspace: tabs, project switching, terminal entry, and session history in one place, with a resizable sidebar.
- Global search: press Cmd+K to search across every session and jump to the match.
- Branch / Worktree launch: choose a repository branch and decide whether to use the current working tree or an isolated Worktree.
- Review edits file by file: the workspace lists this turn's changes; open any file for a syntax-highlighted diff, or undo the whole turn.
- Built-in browser preview: the page your agent just edited renders right inside the app, cookies and login state included.
- Five permission modes: from "ask every time" to "skip permissions" — risky commands, tool calls, and follow-up questions are all approved in the GUI.
- Bring your own model: sign in to Claude, ChatGPT, or Grok; use presets for DeepSeek, Kimi, Zhipu GLM and others; or point it at LM Studio and Ollama running locally.
- Image generation: generate and edit images right in the chat — sign in with ChatGPT or Grok for instant use, or plug in any OpenAI-compatible Images API.
- Visual MCP manager: add and edit MCP servers in a GUI — STDIO / Streamable HTTP / SSE, with project, shared, or global scope.
- Six colour themes: white, paper, warm classic, celadon, ink night, and ink blue — optionally following your system's light/dark setting.
- Skill marketplace: discover, preview, and install third-party skills from ClawHub / SkillHub, with source and safety status shown up front.
- Session activity panel: track task progress, background tasks, SubAgents, and sources in one side panel.
- Visual SubAgent manager: create and tune SubAgents in a GUI — model, tools, and permission mode.
- Agent Teams workbench: visualize multi-agent collaboration in the GUI — members, tasks, a communication feed, and a dependency-lane canvas.
- Dynamic Workflow orchestration: the model writes and runs orchestration scripts on the fly, driving subagents concurrently or in pipelines, with phase views, interrupts, and resume.
- Model trace: every model request is logged locally with status and timing — search and filter to diagnose stuck or failed calls.
- Computer Use: let the agent take screenshots, click, type, and control desktop apps after authorization; the native macOS runtime does not take over your physical mouse or keyboard.
- Desktop pets: Dada, Huhu, Bubu, and Huihui change what they do with the task at hand — or raise one of your own (off by default).
- H5 remote access: scan a QR code to continue the session in your phone browser; locking the screen won't kill a running task.
- IM integration: chat, switch projects, and approve actions through Telegram / Feishu / WeChat / DingTalk / WhatsApp / WeCom / QQ / Slack.
- Scheduled tasks and usage stats: run planned tasks in their own sessions and track local token usage trends.
More Documentation
Full documentation site: https://cchaha.ai
| Section | Documents |
|---|---|
| Getting started | What this is · Download and install · Connect a model provider · Your first session · Troubleshooting |
| Desktop features | Feature overview · Computer Use · Desktop pets · Phone H5 and IM relay |
| IM integrations | Overview and pairing · Feishu · Telegram · WeChat · DingTalk · WhatsApp · WeCom · QQ · Slack |
| CLI | Install and run · Command reference · Environment variables |
| Internals | Desktop architecture · Multi-agent system · Skills system · Memory system · Computer Use architecture · Local server and API · Channel system · Project structure · Contributing and quality gates |
Tech Stack
| Category | Technology |
|---|---|
| Language | TypeScript |
| Desktop app | Electron |
| Desktop UI | React + Vite |
| Local runtime | Bun |
| Terminal UI | React + Ink |
| CLI parsing | Commander.js |
| API | Anthropic SDK |
| Protocols | MCP, LSP |
Acknowledgements
Thanks to the following open-source projects and community practices for reference and inspiration:
- React: frontend engineering and component-based UI ecosystem.
- Electron: cross-platform desktop app capabilities and engineering practices.
- cc-switch: reference for model provider configuration.
- LINUX DO: a new ideal developer community.
⭐ Star History
If this project helps you, please support it with a ⭐ Star so more people can discover cc-haha.











